• 类型映射说明
  • 日期函数
  • 窗口函数
  • 字符串函数
  • 数学函数
  • 聚合函数
  • 其他函数

    类型映射说明

    udf函数本身使用的是spark类型系统

    而pandora拥有自己的类型系统,两者类型匹配信息如下:

    Pandora Spark
    float double
    long bigint
    string string
    date timestamp
    boolean boolean
    array array
    map struct

    -

    日期函数

    函数名称

    datediff

    函数声明

    1. int datediff(Date date1, Date date2)

    参数说明

    1. date1date2Date类型,被减数和减数,若输入为string类型会隐式转换为date类型后参与运算,其它类型抛异常。
    2. 返回值:int类型。任一输入参数是NULL,返回NULL
    3. 备注 :
    4. 计算时会按照datepart切掉低单位部分,然后再计算结果。
    5. 示例:
    6. start = 2005-12-31 23:59:59end = 2006-01-01 00:00:00:
    7. datediff(end, start) = 1

    -

    函数名称

    from_unixtime

    函数声明

    1. string from_unixtime(bigint unixtime)

    参数说明

    1. unixtimeBigint类型,秒数,unix格式的日期时间值,若输入为stringdouble类型会隐式转换为bigint后参与运算。
    2. 返回值:String类型的日期值,unixtimeNULL时返回NULL
    3. 示例:
    4. from_unixtime(123456789) = 2009-01-20 21:06:29
    5. 用途

    -

    函数名称

    to_date

    函数声明

    1. Date to_date(string date)

    参数说明

    1. dateDatetime类型值,若输入为String类型会自动转换字符串格式为日期值,若为其它类型抛异常,为空串时抛异常。
    2. 返回值:Datetime类型。若任一输入为NULL,返回NULL值。
    3. 示例:
    4. to_date('2009-07-30 04:17:52') = 2009-07-30

    -

    函数名称

    unix_timestamp

    函数声明

    1. bigint unix_timestamp() 返回当前时间的timestamp
    2. bigint unix_timestamp(string date, string dateFormat) 参数dateFormat默认为 yyyy-MM-dd HH:mm:ss
    3. bigint unix_timestamp(string date) 使用默认dateFormat来解析date并返回

    参数说明

    1. dateDatetime类型日期值,若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。
    2. dateFormat:日期值的解析格式,默认 yyyy-MM-dd HH:mm:ss
    3. 返回值:Bigint类型,表示unix格式日期值,dateNULL时返回NULL
    4. 示例:
    5. unix_timestamp('2017-01-02 15:00:00','yyyy-MM-dd')
    6. 返回1483286400

    -

    函数名称

    weekofyear

    函数声明

    1. int weekofyear(Date date)

    参数说明

    1. 需要注意的是,关于这一周算上一年, 还是下一年,主要是看这一周大多数日期(4天以上)在哪一年多。 算在前一年,就是前一年的最后一周。算在后一年就是后一年的第一周。
    2. 参数说明:
    3. dateDate类型日期值,若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。
    4. 返回值:int类型。若输入为NULL,返回NULL
    5. 示例说明:
    6. select weekofyear(to_date("20141229", "yyyymmdd")) from dual;
    7. 返回结果:
    8. +------------+
    9. | _c0 |
    10. +------------+
    11. | 1 |
    12. +------------+
    13. -虽然20141229属于2014年,但是这一周的大多数日期是在2015年,因此返回结果为1,表示是2015年的第一周。
    14. select weekofyear(to_date("20141231", "yyyymmdd")) from dual;--返回结果为1
    15. select weekofyear(to_date("20151229", "yyyymmdd")) from dual;--返回结果为53

    -

    窗口函数

    函数名称

    avg

    函数声明

    1. avg([distinct] expr) over(partition by col1[, col2…]
    2. [order by col1 [asc|desc] [, col2[asc|desc]…]] [windowing_clause])

    参数说明

    1. distinct:当指定distinct关键字时表示取唯一值的平均值。
    2. exprDouble类型,若输入为stringbigint会隐式转换到double类型后参与运算,其它类型抛异常。当值为NULL时,该行不参与计算。 Boolean类型不允许参与计算。
    3. partition by col1[, col2]…:指定开窗口的列。
    4. order by col1 [asc|desc], col2[asc|desc]:不指定order by时返回当前窗口内所有值的平均值,指定order by时返回结果以指定的方式排序, 并且返回窗口内从开始行到当前行的累计平均值。
    5. 返回值:Double类型。
    6. 备注:
    7. windowing_clause部分可以用rows指定开窗方式,有两种方式:
    8. rows between x preceding|following and y preceding|following表示窗口范围是从前或后x行到前或后y行。
    9. rows x preceding|following窗口范围是从前或后第x行到当前行。
    10. xy必须为大于等于0的整数常量,限定范围0 ~ 10000,值为0时表示当前行。必须指定order by才可以用rows方式指定窗口范围
    11. 指明distinct关键字时不能写order by

    -

    函数名称

    count

    函数声明

    1. bigint count([distinct] expr) over(partition by col1[, col2…]
    2. [order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])

    参数说明

    1. expr:任意类型,当值为NULL时,该行不参与计算。当指定distinct关键字时表示取唯一值的计数值。
    2. partition by col1[, col2…]:指定开窗口的列。
    3. order by col1 [asc|desc], col2[asc|desc]:不指定order by时,返回当前窗口内expr的计数值,指定order by时返回结果以指定的顺序排序, 并且值为当前窗口内从开始行到当前行的累计计数值。
    4. 返回值:Bigint类型。
    5. 备注:
    6. windowing_clause部分可以用rows指定开窗方式,有两种方式:
    7. rows between x preceding|following and y preceding|following表示窗口范围是从前或后x行到前或后y行。
    8. rows x preceding|following窗口范围是从前或后第x行到当前行。
    9. xy必须为大于等于0的整数常量,限定范围0 ~ 10000,值为0时表示当前行。必须指定order by才可以用rows方式指定窗口范围
    10. 当指定distinct关键字时不能写order by
    11. 示例:假设存在表test_src,表中存在bigint类型的列user_id
    12. select user_id,
    13. count(user_id) over (partition by user_id) as count
    14. from test_src;
    15. +---------+------------+
    16. | user_id | count |
    17. +---------+------------+
    18. | 1 | 3 |
    19. | 1 | 3 |
    20. | 1 | 3 |
    21. | 2 | 1 |
    22. | 3 | 1 |
    23. +---------+------------+
    24. -- 不指定order by时,返回当前窗口内user_id的计数值
    25. select user_id,
    26. count(user_id) over (partition by user_id order by user_id) as count
    27. from test_src;
    28. +---------+------------+
    29. | user_id | count |
    30. +---------+------------+
    31. | 1 | 1 | -- 窗口起始
    32. | 1 | 2 | -- 到当前行共计两条记录,返回2
    33. | 1 | 3 |
    34. | 2 | 1 |
    35. | 3 | 1 |
    36. +---------+------------+
    37. -- 指定order by时,返回当前窗口内从开始行到当前行的累计计数值。

    -

    函数名称

    dense_rank

    函数声明

    1. bigint dense_rank() over(partition by col1[, col2…]
    2. order by col1 [asc|desc][, col2[asc|desc]…])

    参数说明

    1. artition by col1[, col2..]:指定开窗口的列。
    2. order by col1 [asc|desc], col2[asc|desc]:指定排名依据的值。
    3. 返回值:Bigint类型。

    -

    函数名称

    lag

    函数声明

    1. lag(exprbigint offset, default) over(partition by col1[, col2…]
    2. [order by col1 [asc|desc][, col2[asc|desc]…]])

    参数说明

    1. expr:任意类型。
    2. offsetBigint类型常量,输入为stringdoublebigint的隐式转换,offset > 0
    3. default:当offset指定的范围越界时的缺省值,常量,默认值为NULL
    4. partition by col1[, col2..]:指定开窗口的列。
    5. order by col1 [asc|desc], col2[asc|desc]:指定返回结果的排序方式。
    6. 返回值:同expr类型。

    -

    函数名称

    lead

    函数声明

    1. lead(expr, bigint offset, default) over(partition by col1[, col2…]
    2. [order by col1 [asc|desc][, col2[asc|desc]…]])

    参数说明

    1. expr:任意类型。
    2. offsetBigint类型常量,输入为stringdoublebigint的隐式转换,offset > 0
    3. default:当offset指一的范围越界时的缺省值,常量。
    4. partition by col1[, col2..]:指定开窗口的列。
    5. order by col1 [asc|desc], col2[asc|desc]:指定返回结果的排序方式。
    6. 返回值:同expr类型

    -

    函数名称

    max

    函数声明

    1. max([distinct] expr) over(partition by col1[, col2…]
    2. [order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])

    参数说明

    1. expr:除Boolean以外的任意类型,当值为NULL时,该行不参与计算。当指定distinct关键字时表示取唯一值的最大值(指定该参数与否对结果没有影响)。
    2. partition by col1[, col2…]:指定开窗口的列。
    3. order by col1 [asc|desc], col2[asc|desc]:不指定order by时,返回当前窗口内的最大值。指定order by时,返回结果以指定的方式排序, 并且值为当前窗口内从开始行到当前行的最大值。
    4. 返回值:同expr类型。
    5. 备注:
    6. windowing_clause部分可以用rows指定开窗方式,有两种方式:
    7. rows between x preceding|following and y preceding|following表示窗口范围是从前或后x行到前或后y行。
    8. rows x preceding|following窗口范围是从前或后第x行到当前行。
    9. xy必须为大于等于0的整数常量,限定范围0 ~ 10000,值为0时表示当前行。必须指定order by才可以用rows方式指定窗口范围
    10. 当指定distinct关键字时不能写order by

    -

    函数名称

    min

    函数声明

    1. min([distinct] expr) over(partition by col1[, col2…]
    2. [order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])

    参数说明

    1. expr:除boolean以外的任意类型,当值为NULL时,该行不参与计算。当指定distinct关键字时表示取唯一值的最小值(指定该参数与否对结果没有影响)。
    2. partition by col1[, col2..]:指定开窗口的列。
    3. order by col1 [asc|desc], col2[asc|desc]:不指定order by时,返回当前窗口内的最小值。指定order by时,返回结果以指定的方式排序, 并且值为当前窗口内从开始行到当前行的最小值。
    4. 返回值:同expr类型。
    5. 备注:
    6. windowing_clause部分可以用rows指定开窗方式,有两种方式:
    7. rows between x preceding|following and y preceding|following表示窗口范围是从前或后x行到前或后y行。
    8. rows x preceding|following窗口范围是从前或后第x行到当前行。
    9. xy必须为大于等于0的整数常量,限定范围0 ~ 10000,值为0时表示当前行。必须指定order by才可以用rows方式指定窗口范围
    10. 当指定distinct关键字时不能写order by

    -

    函数名称

    percent_rank

    函数声明

    1. percent_rank() over(partition by col1[, col2…]
    2. order by col1 [asc|desc][, col2[asc|desc]…])

    参数说明

    1. partition by col1[, col2..]:指定开窗口的列。
    2. order by col1 [asc|desc], col2[asc|desc]:指定排名依据的值。
    3. 返回值:Double类型,值域为[0, 1],相对排名的计算方式为为:(rank-1)/(number of rows -1)。
    4. 备注:
    5. 目前限制单个窗口内的行数不超过10,000,000条。

    -

    函数名称

    rank

    函数声明

    1. bigint rank() over(partition by col1[, col2…]
    2. order by col1 [asc|desc][, col2[asc|desc]…])

    参数说明

    1. partition by col2[, col2..]:指定开窗口的列。
    2. order by col1 [asc|desc], col2[asc|desc]:指定排名依据的值。
    3. 返回值:Bigint类型。

    -

    函数名称

    row_number

    函数声明

    1. row_number() over(partition by col1[, col2…]
    2. order by col1 [asc|desc][, col2[asc|desc]…])

    参数说明

    1. partition by col1[, col2..]:指定开窗口的列。
    2. order by col1 [asc|desc], col2[asc|desc]:指定结果返回时的排序的值。
    3. 返回值:Bigint类型。

    -

    函数名称

    stddev

    函数声明

    1. double stddev([distinct] expr) over(partition by col1[, col2…]
    2. [order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])
    3. decimal stddev([distinct] expr) over(partition by col1[,col2…] [order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])

    参数说明

    1. exprDouble类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。当输入值为NULL时忽略该行。 当指定distinct关键字时表示计算唯一值的总体标准差。
    2. partition by col1[, col2..]:指定开窗口的列。
    3. order by col1 [asc|desc], col2[asc|desc]:不指定order by时,返回当前窗口内的总体标准差。指定order by时,返回结果以指定的方式排序, 并且值为当前窗口内从开始行到当前行的总体标准差。
    4. 返回值:输入为Decimal类型时返回Decimal类型,否则返回Double类型。
    5. 备注:
    6. windowing_clause部分可以用rows指定开窗方式,有两种方式:
    7. rows between x preceding|following and y preceding|following表示窗口范围是从前或后x行到前或后y行。
    8. rows x preceding|following窗口范围是从前或后第x行到当前行。
    9. xy必须为大于等于0的整数常量,限定范围0 ~ 10000,值为0时表示当前行。必须指定order by才可以用rows方式指定窗口范围
    10. 当指定distinct关键字时不能写order by

    -

    函数名称

    stddev_samp

    函数声明

    1. double stddev_samp([distinct] expr) over(partition by col1[, col2…]
    2. [order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])

    参数说明

    1. exprDouble类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。当输入值为NULL时忽略该行。 当指定distinct关键字时表示计算唯一值的样本标准差。
    2. partition by col1[, col2..]:指定开窗口的列。
    3. order by col1 [asc|desc], col2[asc|desc]:不指定order by时,返回当前窗口内的样本标准差。指定order by时,返回结果以指定的方式排序, 并且值为当前窗口内从开始行到当前行的样本标准差。
    4. 返回值:Double类型。
    5. 备注:
    6. windowing_clause部分可以用rows指定开窗方式,有两种方式:
    7. rows between x preceding|following and y preceding|following表示窗口范围是从前或后x行到前或后y行。
    8. rows x preceding|following窗口范围是从前或后第x行到当前行。
    9. xy必须为大于等于0的整数常量,限定范围0 ~ 10000,值为0时表示当前行。必须指定order by才可以用rows方式指定窗口范围
    10. 当指定distinct关键字时不能写order by

    -

    函数名称

    sum

    函数声明

    1. sum([distinct] expr) over(partition by col1[, col2…]
    2. [order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])

    参数说明

    1. exprDouble类型,当输入为stringbigint时隐式转换为double参与运算,其它类型报异常。当值为NULL时,该行不参与计算。 指定distinct关键字时表示计算唯一值的汇总值。
    2. partition by col1[, col2..]:指定开窗口的列。
    3. order by col1 [asc|desc], col2[asc|desc]:不指定order by时,返回当前窗口内expr的汇总值。指定order by时, 返回结果以指定的方式排序,并且返回当前窗口从首行至当前行的累计汇总值。
    4. 返回值:输入参数是bigint返回bigint,输入参数为doublestring时,返回double类型。
    5. 备注:
    6. windowing_clause部分可以用rows指定开窗方式,有两种方式:
    7. rows between x preceding|following and y preceding|following表示窗口范围是从前或后x行到前或后y行。
    8. rows x preceding|following窗口范围是从前或后第x行到当前行。
    9. xy必须为大于等于0的整数常量,限定范围0 ~ 10000,值为0时表示当前行。必须指定order by才可以用rows方式指定窗口范围
    10. 当指定distinct时不能用order by

    -

    字符串函数

    函数名称

    concat

    函数声明

    1. string concat(string a, string b...)

    参数说明

    1. ab等为String类型,若输入为bigint,decimaldoubledatetime类型会隐式转换为string后参与运算,其它类型报异常。
    2. 返回值:String类型。如果没有参数或者某个参数为NULL,结果均返回NULL
    3. 示例:
    4. concat('ab', 'c') = 'abc'
    5. concat() = NULL
    6. concat('a', null, 'b') = NULL

    -

    函数名称

    get_json_object

    函数声明

    1. string get_json_object(string json,string path)

    参数说明

    1. json:String类型,标准的json格式字符串。
    2. path:String类型,用于描述在json中的path,以$开头。
    3. 返回值:String类型
    4. 注解: 如果json为空或者非法的json格式,返回NULL 如果path为空或者不合法(json中不存在)返回NULL 如果json合法,path也存在则返回对应字符串
    5. 示例1
    6. +----+
    7. json
    8. +----+
    9. {"store":
    10. {"fruit":[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],
    11. "bicycle":{"price":19.95,"color":"red"}
    12. },
    13. "email":"amy@only_for_json_udf_test.net",
    14. "owner":"amy"
    15. }
    16. 通过以下查询,可以提取json对象中的信息:
    17. SELECT get_json_object(src_json.json, '$.owner') FROM src_json;
    18. amy
    19. SELECT get_json_object(src_json.json, '$.store.fruit[0]') FROM src_json;
    20. {"weight":8,"type":"apple"}
    21. SELECT get_json_object(src_json.json, '$.non_exist_key') FROM src_json;
    22. NULL
    23. 示例2
    24. get_json_object('{"array":[[aaaa,1111],[bbbb,2222],[cccc,3333]]}','$.array[1].[1]') = "2222"
    25. get_json_object('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]') = "["h0","h1","h2"]"
    26. get_json_object('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[1]') = "h1"

    -

    函数名称

    instr

    函数声明

    1. bigint instr(string str1, string str2[, bigint start_position[, bigint nth_appearance]])

    参数说明

    1. str1String类型,搜索的字符串,若输入为bigintdecimaldoubledatetime类型会隐式转换为string后参与运算,其它类型报异常。
    2. str2String类型,要搜索的子串,若输入为bigintdecimaldoubledatetime类型会隐式转换为string后参与运算,其它类型报异常。
    3. start_positionBigint类型,其它类型会抛异常,表示从str1的第几个字符开始搜索,默认起始位置是第一个字符位置1。开始位置如果小于等于0会引发异常。
    4. nth_appearanceBigint类型,大于0,表示子串在字符串中的第nth_appearance次匹配的位置,如果nth_appearance为其它类型或小于等于0会抛异常。
    5. 返回值:Bigint类型
    6. 备注:
    7. 如果在str1中未找到str2,返回0
    8. 任一输入参数为NULL返回NULL
    9. 如果str2为空串时总是能匹配成功,因此instr(‘abc’, ‘’) 会返回1
    10. 示例:
    11. instr('Tech on the net', 'e') = 2
    12. instr('Tech on the net', 'e', 1, 1) = 2
    13. instr('Tech on the net', 'e', 1, 2) = 11
    14. instr('Tech on the net', 'e', 1, 3) = 14

    -

    函数名称

    keyvalue

    函数声明

    1. keyvalue(string srcstrstring split1string split2 string key)
    2. keyvalue(string srcstr string key) //split1 = ";",split2 = ":"

    参数说明

    1. srcStr 输入待拆分的字符串
    2. key 返回该指定键的值
    3. split1, split2 拆分的字符串,只有两个参数时,默认split1为’;’, split2为’:’。当某个被split1拆分后的字符串中有多个split2时,返回结果未定义;
    4. 返回值:
    5. String类型
    6. Split1split2 NULL时,返回NULL.
    7. srcStr,keyNULL或者没有匹配的key时,返回NULL
    8. 如果有多个key-value匹配,返回第一个匹配上的key对应的value
    9. 示例:
    10. keyvalue('0:11:2', 1) = '2'
    11. keyvalue("decreaseStore:1xcard:1isB2C:1 f:21910cart:1shipping:2pf:0market:shoesinstPayAmount:0", "",":","tf") = "21910"
    12. keyvalue("七牛=pandora=2;七牛=数据平台", ";","=", "七牛云") 返回未知结果,请用户避免这种用法

    -

    函数名称

    length

    函数声明

    1. bigint length(string str)

    参数说明

    1. strString类型,若输入为bigintdecimaldoubledatetime类型会隐式转换为string后参与运算,其它类型报异常。
    2. 返回值:Bigint类型。若strNULL返回NULL。如果strUTF-8编码格式,返回-1
    3. 示例
    4. length('hi! 中国') = 6

    -

    函数名称

    md5

    函数声明

    1. string md5(string value)

    参数说明

    1. valueString类型,如果输入类型是bigintdecimaldouble或者datetime会隐式转换成string类型参与运算,其它类型报异常。输入为NULL,返回NULL
    2. 返回值:String类型。

    -

    函数名称

    parse_url

    函数声明

    1. string parse_url(string url, string part[,string key])

    参数说明

    1. urlpartNULL则返回NULLurl为无效抛异常。
    2. partString 类型,支持HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO,不区分大小写,不在此范围抛异常
    3. partQUERY时根据key的值取出在query string中的value值,否则忽略key参数。
    4. 返回值:String类型。
    5. 示例:
    6. url = file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose
    7. parse_url('url', 'HOST') = "example.com"
    8. parse_url('url', 'PATH') = "/over/there/index.dtb"
    9. parse_url('url', 'QUERY') = "type=animal&name=narwhal"
    10. parse_url('url', 'QUERY', 'name') = "narwhal"
    11. parse_url('url', 'REF') = "nose"
    12. parse_url('url', 'PROTOCOL') = "file"
    13. parse_url('url', 'AUTHORITY') = "username:password@example.com:8042"
    14. parse_url('url', 'FILE') = "/over/there/index.dtb?type=animal&name=narwhal"
    15. parse_url('url', 'USERINFO') = "username:password"

    -

    函数名称

    regexp_extract

    函数声明

    1. string regexp_extract(string source, string pattern[, bigint occurrence])

    参数说明

    1. sourceString类型,待搜索的字符串。
    2. patternString类型常量,pattern为空串时抛异常,pattern中如果没有指定group,抛异常。
    3. occurrenceBigint类型常量,必须>=0,其它类型或小于0时抛异常,不指定时默认为1,表示返回第一个group。若occurrence = 0,返回满足整个pattern的子串。
    4. 返回值:String类型,任一输入为NULL返回NULL
    5. 示例:
    6. regexp_extract('foothebar', 'foo(.*?)(bar)', 1) = the
    7. regexp_extract('foothebar', 'foo(.*?)(bar)', 2) = bar
    8. regexp_extract('foothebar', 'foo(.*?)(bar)', 0) = foothebar
    9. regext_extract('8d99d8', '8d(\d+)d8') = 99
    10. regexp_extract('foothebar', 'foothebar')
    11. -- 异常返回,pattern中没有指定group

    -

    函数名称

    regexp_replace

    函数声明

    1. string regexp_replace(string str, string regexp, string rep)

    参数说明

    1. strString类型,待替换的字符串。
    2. regexpString类型,正则表达式。
    3. reqString类型,替换字符串。
    4. 返回值:String类型,当str中完全与regexp不匹配,不进行替换。当输入strregexprep存在NULL时返回NULL,若str中不存在与regexp匹配子串,则返回原字符串str
    5. 示例:
    6. regexp_replace('100-200', '(\\d+)', 'num') = num-num
    7. regexp_replace("100-200", "-", "num") = 100num200
    8. regexp_replace("100-200", "-", NULL) = NULL
    9. regexp_replace("100-200", NULL, "num") = NULL

    -

    函数名称

    substr

    函数声明

    1. string substr(string str, bigint start_position[, bigint length])

    参数说明

    1. strString类型,若输入为bigintdecimaldouble或者datetime类型会隐式转换为string后参与运算,其它类型报异常。
    2. start_positionBigint类型,当start_position为负数时表示开始位置是从字符串的结尾往前倒数,最后一个字符是-1,起始位置为1。其它类型会隐式转换为Bigint类型。
    3. lengthBigint类型,大于0,其它类型或小于等于0抛异常。子串的长度。
    4. 返回值:String类型。若任一输入为NULL,返回NULL
    5. 备注 :
    6. length被省略时,返回到str结尾的子串。
    7. 示例
    8. substr("abc", 2) = "bc"
    9. substr("abc", 2, 1) = "b"

    -

    函数名称

    lower

    函数声明

    1. string lower(string source)

    参数说明

    1. sourceString类型,若输入为bigintdecimaldouble或者datetime类型会隐式转换为string后参与运算,其它类型报异常。
    2. 返回值:String类型。输入为NULL时返回NULL
    3. 示例:
    4. lower("aBcd") = "abcd"
    5. lower("哈哈Cd") = "哈哈cd"

    -

    函数名称

    upper

    函数声明

    1. string upper(string source)

    参数说明

    1. sourceString类型,若输入为bigintdecimaldouble或者datetime类型会隐式转换为string后参与运算,其它类型报异常。
    2. 返回值:String类型。输入为NULL时返回NULL
    3. 示例:
    4. upper("aBcd") = "ABCD"
    5. upper("哈哈Cd") = "哈哈CD"

    -

    函数名称

    trim

    函数声明

    1. string trim(string str)

    参数说明

    1. strString类型,若输入为bigintdecimaldouble或者datetime类型会隐式转换为string后参与运算,其它类型报异常。
    2. 返回值:String类型。输入为NULL时返回NULL

    -

    数学函数

    函数名称

    abs

    函数声明

    1. double abs(double number)
    2. bigint abs(bigint number)

    参数说明

    1. numberdoublebigint类型,输入为bigint时返回bigint,输入为double时返回double类型。 若输入为string类型会隐式转换到double类型后参与运算,其它类型抛异常。
    2. 返回值:double或者bigint类型,取决于输入参数的类型。若输入为null,返回null
    3. 备注:
    4. 当输入bigint类型的值超过bigint的最大表示范围时,会返回double类型,这种情况下可能会损失精度。
    5. 示例:
    6. abs(null) = null
    7. abs(-1) = 1
    8. abs(-1.2) = 1.2
    9. abs("-2") = 2.0
    10. abs(122320837456298376592387456923748) = 1.2232083745629837e32

    -

    函数名称

    acos

    函数声明

    1. double acos(double number)
    2. decimal acos(decimal number)

    参数说明

    1. numberDouble类型或Decimal类型,-1number1。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
    2. 返回值:Double类型或Decimal类型,值域在0 ~ π 之间。若numberNULL,返回NULL
    3. 示例:
    4. acos("0.87") = 0.5155940062460905
    5. acos(0) = 1.5707963267948966

    -

    函数名称

    asin

    函数声明

    1. double asin(double number)
    2. decimal asin(decimal number)

    参数说明

    1. numberDouble类型或Decimal类型,-1number1。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
    2. 返回值:Double类型或Decimal类型,值域在-π/2 ~π/2之间。若numberNULL,返回NULL
    3. 示例:
    4. asin(1) = 1.5707963267948966
    5. asin(-1) = -1.5707963267948966

    -

    函数名称

    atan

    函数声明

    1. double atan(double number)
    2. decimal atan(decimal number)

    参数说明

    1. numberDoubleDecimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
    2. 返回值:若输入为Decimal则返回Decimal类型,否则返回Double类型,值域在-π/2 ~π/2之间。若numberNULL,返回NULL
    3. 示例:
    4. atan(1) = 0.7853981633974483
    5. atan(-1) = -0.7853981633974483

    -

    函数名称

    ceil

    函数声明

    1. bigint ceil(double value)
    2. bigint ceil(decimal value)

    参数说明

    1. valueDouble类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
    2. 返回值:Bigint类型。任一输入为NULL,返回NULL
    3. 示例:
    4. ceil(1.1) = 2
    5. ceil(-1.1) = -1

    -

    函数名称

    conv

    函数声明

    1. string conv(string input, bigint from_base, bigint to_base)

    参数说明

    1. input:以string表示的要转换的整数值,接受bigintdouble的隐式转换。
    2. from_baseto_base:以十进制表示的进制的值,可接受的的值为281016。接受stringdouble的隐式转换。
    3. to_baseto_base:以十进制表示的进制的值,可接受的的值为281016。接受stringdouble的隐式转换。
    4. 返回值:String类型。任一输入为NULL,返回NULL。转换过程以64位精度工作,溢出时报异常。输入如果是负值,即以’-‘开头,报异常。 如果输入的是小数,则会转为整数值后进行进制转换,小数部分会被舍弃。
    5. 示例:
    6. conv('1100', 2, 10) = '12'
    7. conv('1100', 2, 16) = 'C'
    8. conv('ab', 16, 10) = '171'
    9. conv('ab', 16, 16) = 'AB'

    -

    函数名称

    cos

    函数声明

    1. double cos(double number)
    2. decimal cos(decimal number)

    参数说明

    1. numberDouble类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。输入为弧度值。
    2. 返回值:Double类型或Decimal类型。若numberNULL,返回NULL
    3. 示例:
    4. cos(3.1415926/2)=2.6794896585028633e-8
    5. cos(3.1415926)=0.9999999999999986

    -

    函数名称

    cosh

    函数声明

    1. double cosh(double number)
    2. decimal cosh(decimal number)

    参数说明

    1. numberDouble类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。 返回值:Double类型或Decimal类型。若numberNULL,返回NULL

    -

    函数名称

    exp

    函数声明

    1. double exp(double number)
    2. decimal exp(decimal number)

    参数说明

    1. numberDouble类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。 返回值:Double类型或Decimal类型。若numberNULL,返回NULL

    -

    函数名称

    floor

    函数声明

    1. bigint floor(double number)
    2. bigint floor(decimal number)

    参数说明

    1. numberDouble类型或Decimal类型,若输入为string类型或bigint型会隐式转换到double类型后参与运算,其他类型抛异常 返回值:返回Bigint类型。若numberNULL,返回NULL
    2. 示例:
    3. floor(1.2)=1
    4. floor(1.9)=1
    5. floor(0.1)=0
    6. floor(-1.2)=-2
    7. floor(-0.1)=-1
    8. floor(0.0)=0
    9. floor(-0.0)=0

    -

    函数名称

    ln

    函数声明

    1. double ln(double number)
    2. decimal ln(decimal number)

    参数说明

    1. numberDouble类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。若numberNULL返回NULL, number为负数或零,则抛异常。 返回值:Double类型或Decimal类型。

    -

    函数名称

    log

    函数声明

    1. double log(double base, double x)
    2. decimal log(decimal base, decimal x)

    参数说明

    1. baseDouble类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
    2. xDouble类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。 返回值:Double类型或Decimal类型的对数值,若basex中存在NULL,则返回NULL;若basex中某一个值为负数或0,会引发异常;若base1(会引发一个除零行为)也会引发异常。

    -

    函数名称

    pow

    函数声明

    1. double pow(double x, double y)
    2. decimal pow(decimal x, decimal y)

    参数说明

    1. XDouble类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
    2. YDouble类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。 返回值:Double类型或Decimal类型。若xyNULL,则返回NULL

    -

    函数名称

    rand

    函数声明

    1. double rand(bigint seed)
    2. decimal rand(decimal seed)

    参数说明

    1. seedBigint类型,随机数种子,决定随机数序列的起始值。 返回值:Double类型或Decimal类型

    -

    函数名称

    round

    函数声明

    1. double round(double number, [bigint decimal_places])
    2. decimal round(decimal number, [bigint decimal_places])

    参数说明

    1. numberDouble类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
    2. decimal_placeBigint类型常量,四舍五入计算到小数点后的位置,其他类型参数会引发异常. 如果省略表示四舍五入到个位数。默认值为0 返回值:返回Double类型或Decimal类型。若numberdecimal_placesNULL,返回NULL
    3. 备注:
    4. decimal_places可以是负数。负数会从小数点向左开始计数,并且不保留小数部分;如果decimal_places超过了整数部分长度,返回0. 示例:
    5. round(125.315) = 125.0
    6. round(125.315, 0) = 125.0
    7. round(125.315, 1) = 125.3
    8. round(125.315, 2) = 125.32
    9. round(125.315, 3) = 125.315
    10. round(-125.315, 2) = -125.32
    11. round(123.345, -2) = 100.0
    12. round(null) = null
    13. round(123.345, 4) = 123.345
    14. round(123.345, -4) = 0.0

    -

    函数名称

    sin

    函数声明

    1. double sin(double number)
    2. decimal sin(decimal number)

    参数说明

    1. numberDouble类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。 返回值:Double类型或Decimal类型。若numberNULL,返回NULL。输入为弧度值。

    -

    函数名称

    sinh

    函数声明

    1. double sinh(double number)
    2. decimal sinh(decimal number)

    参数说明

    1. numberDouble类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。 返回值:Double类型或Decimal类型。若numberNULL,返回NULL

    -

    函数名称

    sqrt

    函数声明

    1. double sqrt(double number)
    2. decimal sqrt(decimal number)

    参数说明

    1. numberDouble类型或Decimal类型,必须大于0。小于0时引发异常。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。 返回值:返回Double类型或Decimal类型。若numberNULL,返回NULL

    -

    函数名称

    tan

    函数声明

    1. double tan(double number)
    2. decimal tan(decimal number)

    参数说明

    1. numberDouble类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。 返回值:Double类型或Decimal类型。若numberNULL,返回NULL

    -

    函数名称

    tanh

    函数声明

    1. double tanh(double number)
    2. decimal tanh(decimal number)

    参数说明

    1. numberDouble类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。 返回值:Double类型或Decimal类型。若numberNULL,返回NULL

    -

    聚合函数

    函数名称

    avg

    函数声明

    1. double avg(double value)
    2. decimal avg(decimal value)

    参数说明

    1. Double或者Decimal类型,若输入为StringBigint会隐式转换到Double类型后参与运算,其它类型抛异常。当value值为NULL时,该行不参与计算。Boolean类型不允许参与计算。
    2. 返回值:若输入Decimal类型,返回Decimal类型,其他合法输入类型返回Double类型
    3. 示例:
    4. tbla输入数据
    5. +-------+
    6. | value |
    7. +-------+
    8. | 1 |
    9. | 2 |
    10. | NULL|
    11. +-------+
    12. SELECT AVG(value) AS avg FROM tbla;
    13. +------+
    14. | avg |
    15. +------+
    16. | 1.5 |
    17. +------+"

    -

    函数名称

    count

    函数声明

    1. bigint count([distict|all] value)

    参数说明

    1. distinct|all:指明在计数时是否去除重复记录,默认是all,即计算全部记录,如果指定distinct,则可以只计算唯一值数量。
    2. value:可以为任意类型,当value值为NULL时,该行不参与计算,value可以为,当count()时,返回所有行数。
    3. 返回值:Bigint类型。
    4. 示例:
    5. -- 如表tbla有列col1类型为bigint
    6. +------+
    7. | COL1 |
    8. +------+
    9. | 1 |
    10. +------+
    11. | 2 |
    12. +------+
    13. | NULL |
    14. +------+
    15. select count(*) from tbla; -- 值为3,
    16. select count(col1) from tbla; -- 值为2
    17. 聚合函数可以和group by一同使用,例如:假设存在表test_src,存在如下两列:key string类型,value double类型,
    18. -- test_src的数据为
    19. +-----+-------+
    20. | key | value |
    21. +-----+-------+
    22. | a | 2.0 |
    23. +-----+-------+
    24. | a | 4.0 |
    25. +-----+-------+
    26. | b | 1.0 |
    27. +-----+-------+
    28. | b | 3.0 |
    29. +-----+-------+
    30. -- 此时执行如下语句,结果为:
    31. select key, count(value) as count from test_src group by key;
    32. +-----+-------+
    33. | key | count |
    34. +-----+-------+
    35. | a | 2 |
    36. +-----+-------+
    37. | b | 2 |
    38. +-----+-------+

    -

    函数名称

    max

    函数声明

    1. max(value)

    参数说明

    1. value:可以为任意类型,当列中的值为NULL时,该行不参与计算。Boolean类型不允许参与运算。
    2. 返回值:与value类型相同。
    3. 示例:
    4. -- 如表tbla有一列value,类型为bigint
    5. +------+
    6. | value |
    7. +------+
    8. | 1 |
    9. +------+
    10. | 2 |
    11. +------+
    12. | NULL |
    13. +------+
    14. select max(value) from tbla; -- 返回值为2

    -

    函数名称

    min

    函数声明

    1. min(value)

    参数说明

    1. value:可以为任意类型,当列中的值为NULL时,该行不参与计算。Boolean类型不允许参与计算。
    2. 示例:
    3. -- 如表tbla有一列value,类型为bigint
    4. +------+
    5. | value|
    6. +------+
    7. | 1 |
    8. +------+
    9. | 2 |
    10. +------+
    11. | NULL |
    12. +------+
    13. select min(value) from tbla; -- 返回值为1

    -

    函数名称

    stddev

    函数声明

    1. double stddev(double number)
    2. decimal stddev(decimal number)

    参数说明

    1. numberDouble类型或者Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。当输入值为NULL时忽略。
    2. 返回值:Double类型或者Decimal类型

    -

    函数名称

    stddev_samp

    函数声明

    1. double stddev_samp(double number)
    2. decimal stddev_samp(decimal number)

    参数说明

    1. numberDouble类型或者Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。当输入值为NULL时忽略。
    2. 返回值:Double类型或者Decimal类型

    -

    函数名称

    sum

    函数声明

    1. sum(value)

    参数说明

    1. valuedoubledecimalBigint类型,若输入为string会隐式转换到double类型后参与运算,当列中的值为NULL时,该行不参与计算。Boolean类型不允许参与计算。
    2. 返回值:输入为bigint时返回bigint,输入为doublestring时返回double类型。
    3. 示例:
    4. -- 如表tbla有一列value,类型为bigint
    5. +------+
    6. | value|
    7. +------+
    8. | 1 |
    9. +------+
    10. | 2 |
    11. +------+
    12. | NULL |
    13. +------+
    14. select sum(value) from tbla; -- 返回值为3

    -

    其他函数

    函数名称

    cast

    函数声明

    1. cast(expr as)

    参数说明

    1. 将表达式的结果转换成目标类型,如cast(‘1 as bigint)将字符串‘1’转为整数类型的1,如果转换不成功或不支持的类型转换会引发异常
    2. cast(double as bigint),将double值转换成bigint
    3. cast(string as bigint) 在将字符串转为bigint时,如果字符串中是以整型表达的数字,会直接转为bigint类型。 如果字符串中是以浮点数或指数形式表达的数字,则会先转为double类型,再转为bigint类型。
    4. cast(string as datetime) cast(datetime as string)时,会采用默认的日期格式yyyy-mm-dd hh:mi:ss

    -

    函数名称

    coalesce

    函数声明

    1. coalesce(expr_1, expr_2, ...)

    参数说明

    1. expr_i(i=1,2,3...)是要测试表达式。
    2. 返回值:返回第一个非空的表达式值。
    3. 备注:
    4. 所有这些值类型必须相同或为NULL,否则会尝试进行隐式转换。

    -

    函数名称

    greatest

    函数声明

    1. greatest(var1, var2, …)

    参数说明

    1. var1var2可以为bigintdoubledatetime或者string。若所有值都为NULL则返回NULL
    2. 返回值:
    3. 输入参数中的最大值,当不存在隐式转换时返回同输入参数类型。
    4. NULL为最小值。
    5. 当输入参数类型不同时,doublebigintstring之间的比较转为doublestringdatetime的比较转为datetime。不允许其它的隐式转换

    -

    函数名称

    least

    函数声明

    1. least(var1, var2, …)

    参数说明

    1. var1var2可以为bigintdoubledatetime或者string。若所有值都为NULL则返回NULL
    2. 返回值:
    3. 输入参数中的最小值,当不存在隐式转换时返回同输入参数类型。
    4. NULL为最小。
    5. 有类型转换时,doublebigintstring之间的转换返回doublestringdatetime之间的转换返回datetime。不允许其它的隐式类型转换。

    -