@bdap
2017-07-19T10:41:31.000000Z
字数 20572
阅读 13181
Hive常用函数
D-query
日期函数
dateadd()
- 函数名称: dateadd
- 命令格式: datetime dateadd(datetime date, bigint delta, string datepart)
- 用 途: 日期加减计算
- 参数说明:
date
:Datetime类型,日期值。若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。。
delta
:Bigint类型,修改幅度。若输入为string类型或double型会隐式转换到bigint类型后参与运算,其他类型会引发异常。若delta大于0,加;否则减。
datepart
:String类型常量。此字段的取值遵循string与datetime类型转换的约定,即""yyyy""表示年,""mm""表示月…. 关于类型转换的规则请参考 String类型与Datetime类型之间的转换 。此外也支持扩展的日期格式:年-""year"",月-""month""或""mon"",日-""day"", 小时-""hour""。非常量、不支持的格式会或其它类型抛异常。
返回值
:Datetime类型。若任一输入参数为NULL,返回NULL。
datediff()
- 函数名称: datediff
- 命令格式: bigint datediff(datetime date1, datetime date2, string datepart)
- 用 途: 计算两个日期差值
- 参数说明:
datet1
date2
:Datetime类型,被减数和减数,若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。
datepart
:String类型常量。支持扩展的日期格式。若datepart不符合指定格式或者其它类型则会发生异常。
返回值
:Bigint类型。任一输入参数是NULL,返回NULL。
备注
: 计算时会按照datepart切掉低单位部分,然后再计算结果。
datepart()
- 函数名称: datepart
- 命令格式: bigint datepart(datetime date, string datepart)
- 用 途: 提取日期date中指定的时间单位datepart的值
- 参数说明:
date
:Datetime类型,若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。
datepart
:String类型常量。支持扩展的日期格式。若datepart不符合指定格式或者其它类型则会发生异常。
返回值
:Bigint类型。若任一输入参数为NULL,返回NULL。
datetrunc()
- 函数名称: datetrunc
- 命令格式: datetime datetrunc (datetime date, string datepart)
- 用 途: 返回日期date被截取指定时间单位datepart后的日期值
- 参数说明:
date
:Datetime类型,若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。
datepart
:String类型常量。支持扩展的日期格式。若datepartt不符合指定格式或者其它类型则会发生异常。
返回值
:Datetime类型。任意一个参数为NULL的时候返回NULL。
示例
:
datetrunc(2011-12-07 16:28:46, 'yyyy') = 2011-01-01 00:00:00
datetrunc(2011-12-07 16:28:46, 'month') = 2011-12-01 00:00:00
datetrunc(2011-12-07 16:28:46, 'DD') = 2011-12-07 00:00:00
from_unixtime()
- 函数名称: from_unixtime
- 命令格式: datetime from_unixtime(bigint unixtime)
- 用 途: 将数字型的unix时间日期值unixtime转为日期值
- 参数说明:
unixtime
:Bigint类型,秒数,unix格式的日期时间值,若输入为string,double类型会隐式转换为bigint后参与运算。
返回值
:Datetime类型的日期值,unixtime为NULL时返回NULL。
示例
: from_unixtime(123456789) = 2009-01-20 21:06:29
getdate()
- 函数名称: getdate
- 命令格式: datetime getdate()
- 用 途: 获取当前系统时间。使用东八区时间作为ODPS标准时间
- 参数说明:
返回值
:返回当前日期和时间,datetime类型。
备注
:在一个ODPS SQL任务中(以分布式方式执行),getdate总是返回一个固定的值。返回结果会是ODPS SQL执行期间的任意时间,时间精度精确到秒。
isdate()
- 函数名称: isdate
- 命令格式: boolean isdate(string date, string format)
- 用 途: 判断一个日期字符串能否根据对应的格式串转换为一个日期值,如果转换成功返回TRUE,否则返回FALSE
- 参数说明:
date
:String格式的日期值,若输入为bigint,double或者datetime类型会隐式转换为string类型后参与运算,其它类型报异常。
format
:String类型常量,不支持日期扩展格式。其它类型或不支持的格式会抛异常。如果format中出现多余的格式串, 则只取第一个格式串对应的日期数值,其余的会被视为分隔符。如isdate(""1234-yyyy "", ""yyyy-yyyy ""),会返回TRUE。
返回值
:Boolean类型,如任意参数为NULL,返回NULL。
lastday()
- 函数名称: lastday
- 命令格式: datetime lastday(datetimei date)
- 用 途: 取date当月的最后一天,截取到天,时分秒部分为00:00:00
- 参数说明:
date
:Datetime类型,若输入为string类型会隐式转换为datetime类型后参与运算,其它类型报异常。
返回值
:Datetime类型,如输入为NULL,返回NULL
to_char()
- 函数名称: to_char
- 命令格式: string to_char(datetime date, string format)
- 用 途: 将日期类型date按照format指定的格式转成字符串
- 参数说明:
date
:Datetime类型,要转换的日期值,若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。
format
:String类型常量。非常量或其他类型会引发异常。format中的日期格式部分会被替换成相应的数据,其它字符直接输出。
返回值
:String类型。任一输入参数为NULL,返回NULL。
备注
: 关于其他类型向string类型转换请参考 字符串函数 TO_CHAR 。
to_date()
- 函数名称: to_date
- 命令格式: datetime to_date(string date, string format)
- 用 途: 将一个字符串date按照format指定的格式转成日期值
- 参数说明:
date
:String类型,要转换的字符串格式的日期值,若输入为bigint,double或者datetime类型会隐式转换为String类型后参与运算, 为其它类型抛异常,为空串时抛异常。
format
:String类型常量,日期格式。非常量或其他类型会引发异常。format不支持日期扩展格式,其他字符作为无用字符在解析时忽略。 format参数至少包含""yyyy"",否则引发异常,如果format中出现多余的格式串,则只取第一个格式串对应的日期数值,其余的会被视为分隔符。 如to_date(""1234-2234 "", ""yyyy-yyyy "")会返回1234-01-01 00:00:00。
返回值
:Datetime类型。若任一输入为NULL,返回NULL值。
unix_timestamp()
- 函数名称: unix_timestamp
- 命令格式: bigint unix_timestamp(datetime date)
- 用 途: 将日期date转化为整型的unix格式的日期时间值
- 参数说明:
date
:Datetime类型日期值,若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。
返回值
:Bigint类型,表示unix格式日期值,date为NULL时返回NULL。
weekday()
- 函数名称: weekday
- 命令格式: bigint weekday (datetime date)
- 用 途: 返回date日期当前周的第几天
- 参数说明:
date
:Datetime类型,若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。
返回值
:Bigint类型,若输入参数为NULL,返回NULL。周一作为一周的第一天,返回值为0。其他日期依次递增,周日返回6。
weekofyear()
- 函数名称: weekofyear
- 命令格式: bigint weekofyear(datetime date)
- 用 途: 返回日期date位于那一年的第几周
- 参数说明:
date
:Datetime类型日期值,若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。
返回值
:Bigint类型。若输入为NULL,返回NULL。
窗口函数
avg()
- 函数名称: avg
- 命令格式:
avg([distinct] expr) over(partition by col1[, col2…]
[order by col1 [asc|desc] [, col2[asc|desc]…]] [windowing_clause])
- 用 途: 计算平均值
- 参数说明:
distinct
:当指定distinct关键字时表示取唯一值的平均值。
expr
:Double类型,若输入为string,bigint会隐式转换到double类型后参与运算,其它类型抛异常。当值为NULL时,该行不参与计算。 Boolean类型不允许参与计算。
partition by col1[, col2]…:指定开窗口的列。
order by col1 [asc|desc], col2[asc|desc]:不指定order by时返回当前窗口内所有值的平均值,指定order by时返回结果以指定的方式排序, 并且返回窗口内从开始行到当前行的累计平均值。
返回值
:Double类型。
备注
: windowing_clause部分可以用rows指定开窗方式,有两种方式:
rows between x preceding|following and y preceding|following表示窗口范围是从前或后x行到前或后y行。
rows x preceding|following窗口范围是从前或后第x行到当前行。
x,y必须为大于等于0的整数常量,限定范围0 ~ 10000,值为0时表示当前行。必须指定order by才可以用rows方式指定窗口范围
指明distinct关键字时不能写order by。
cluster_sample()
- 函数名称: cluster_sample
- 命令格式:
boolean cluster_sample(bigint x[, bigint y])
over(partition by col1[, col2..])
- 用 途: 分组抽样
- 参数说明:
x
:Bigint类型常量,x>=1。若指定参数y,x表示将一个窗口分为x份;否则,x表示在一个窗口中抽取x行记录(即有x行返回值为true)。x为NULL时,返回值为NULL。
y
:Bigint类型常量,y>=1,y<=x。表示从一个窗口分的x份中抽取y份记录(即y份记录返回值为true)。y为NULL时,返回值为NULL。
partition by col1[, col2]:指定开窗口的列。
返回值
:Boolean类型。
count()
- 函数名称: count
- 命令格式:
bigint count([distinct] expr) over(partition by col1[, col2…]
[order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])
- 用 途: 计算计数值
- 参数说明:
expr
:任意类型,当值为NULL时,该行不参与计算。当指定distinct关键字时表示取唯一值的计数值。
partition by col1[, col2…]
:指定开窗口的列。
order by col1 [asc|desc], col2[asc|desc]
:不指定order by时,返回当前窗口内expr的计数值,指定order by时返回结果以指定的顺序排序, 并且值为当前窗口内从开始行到当前行的累计计数值。
返回值
:Bigint类型。
dense_rank()
- 函数名称: dense_rank
- 命令格式:
bigint dense_rank() over(partition by col1[, col2…]
order by col1 [asc|desc][, col2[asc|desc]…])
- 用 途: 计算连续排名。col2相同的行数据获得的排名相同
- 参数说明:
artition by col1[, col2..]
:指定开窗口的列。
order by col1 [asc|desc], col2[asc|desc]
:指定排名依据的值。
返回值
:Bigint类型。
lag()
- 函数名称: lag
- 命令格式:
lag(expr,bigint offset, default) over(partition by col1[, col2…]
[order by col1 [asc|desc][, col2[asc|desc]…]])
- 用 途: 按偏移量取当前行之前第几行的值,如当前行号为rn,则取行号为rn-offset的值
- 参数说明:
expr
:任意类型。
offset
:Bigint类型常量,输入为string,double到bigint的隐式转换,offset > 0。
default
:当offset指定的范围越界时的缺省值,常量,默认值为NULL。
partition by col1[, col2..]
:指定开窗口的列。
order by col1 [asc|desc], col2[asc|desc]
:指定返回结果的排序方式。
返回值
:同expr类型。
lead()
- 函数名称: lead
- 命令格式:
lead(expr, bigint offset, default) over(partition by col1[, col2…]
[order by col1 [asc|desc][, col2[asc|desc]…]])
- 用 途: 按偏移量取当前行之后第几行的值,如当前行号为rn则取行号为rn+offset的值
- 参数说明:
expr
:任意类型。
offset
:Bigint类型常量,输入为string,double到bigint的隐式转换,offset > 0。
default
:当offset指一的范围越界时的缺省值,常量。
partition by col1[, col2..]
:指定开窗口的列。
order by col1 [asc|desc], col2[asc|desc]
:指定返回结果的排序方式。
返回值
:同expr类型
max()
- 函数名称: max
- 命令格式:
max([distinct] expr) over(partition by col1[, col2…]
[order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])
- 用 途: 计算最大值
- 参数说明:
expr
:除Boolean以外的任意类型,当值为NULL时,该行不参与计算。当指定distinct关键字时表示取唯一值的最大值(指定该参数与否对结果没有影响)。
partition by col1[, col2…]
:指定开窗口的列。
order by col1 [asc|desc], col2[asc|desc]
:不指定order by时,返回当前窗口内的最大值。指定order by时,返回结果以指定的方式排序, 并且值为当前窗口内从开始行到当前行的最大值。
返回值:同expr类型。
- 函数名称: median
- 命令格式:
double median(double number) over(partition by col1[, col2…])
decimal median(decimal number) over(partition by col1[,col2…])
- 用 途: 计算中位数
- 参数说明:
number
:Double类型或decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。当输入值为null时忽略。
partition by col1[, col2…]
:指定开窗口的列。
返回值
:Double类型。
min()
- 函数名称: min
- 命令格式:
min([distinct] expr) over(partition by col1[, col2…]
[order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])
- 用 途: 计算最小值
- 参数说明:
expr
:除boolean以外的任意类型,当值为NULL时,该行不参与计算。当指定distinct关键字时表示取唯一值的最小值(指定该参数与否对结果没有影响)。
partition by col1[, col2..]
:指定开窗口的列。
order by col1 [asc|desc], col2[asc|desc]
:不指定order by时,返回当前窗口内的最小值。指定order by时,返回结果以指定的方式排序, 并且值为当前窗口内从开始行到当前行的最小值。
返回值
:同expr类型。
percent_rank()
- 函数名称: percent_rank
- 命令格式:
percent_rank() over(partition by col1[, col2…]
order by col1 [asc|desc][, col2[asc|desc]…])
- 用 途: 计算一组数据中某行的相对排名
- 参数说明:
partition by col1[, col2..]
:指定开窗口的列。
order by col1 [asc|desc], col2[asc|desc]
:指定排名依据的值。
返回值
:Double类型,值域为[0, 1],相对排名的计算方式为为:(rank-1)/(number of rows -1)。
备注
: 目前限制单个窗口内的行数不超过10,000,000条。
rank()
- 函数名称: rank
- 命令格式:
bigint rank() over(partition by col1[, col2…]
order by col1 [asc|desc][, col2[asc|desc]…])
- 用 途: 计算排名。col2相同的行数据获得排名顺序下降
- 参数说明:
partition by col2[, col2..]
:指定开窗口的列。
order by col1 [asc|desc], col2[asc|desc]
:指定排名依据的值。
返回值
:Bigint类型。
row_number()
- 函数名称: row_number
- 命令格式:
row_number() over(partition by col1[, col2…]
order by col1 [asc|desc][, col2[asc|desc]…])
- 用 途: 算行号,从1开始
- 参数说明:
partition by col1[, col2..]
:指定开窗口的列。
order by col1 [asc|desc], col2[asc|desc]
:指定结果返回时的排序的值。
返回值
:Bigint类型。
stddev()
- 函数名称: stddev
- 命令格式:
double stddev([distinct] expr) over(partition by col1[, col2…]
[order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])
decimal stddev([distinct] expr) over(partition by col1[,col2…] [order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])
- 用 途: 总体标准差
- 参数说明:
expr
:Double类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。当输入值为NULL时忽略该行。 当指定distinct关键字时表示计算唯一值的总体标准差。
partition by col1[, col2..]
:指定开窗口的列。
order by col1 [asc|desc], col2[asc|desc]
:不指定order by时,返回当前窗口内的总体标准差。指定order by时,返回结果以指定的方式排序, 并且值为当前窗口内从开始行到当前行的总体标准差。
返回值
:输入为Decimal类型时返回Decimal类型,否则返回Double类型。
stddev_samp()
- 函数名称: stddev_samp
- 命令格式:
double stddev_samp([distinct] expr) over(partition by col1[, col2…]
[order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])
- 用 途: 样本标准差
- 参数说明:
expr
:Double类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。当输入值为NULL时忽略该行。 当指定distinct关键字时表示计算唯一值的样本标准差。
partition by col1[, col2..]
:指定开窗口的列。
order by col1 [asc|desc], col2[asc|desc]
:不指定order by时,返回当前窗口内的样本标准差。指定order by时,返回结果以指定的方式排序, 并且值为当前窗口内从开始行到当前行的样本标准差。
返回值
:Double类型。
sum()
- 函数名称: sum
- 命令格式:
sum([distinct] expr) over(partition by col1[, col2…]
[order by col1 [asc|desc][, col2[asc|desc]…]] [windowing_clause])
- 用 途: 计算汇总值
- 参数说明:
expr
:Double类型,当输入为string,bigint时隐式转换为double参与运算,其它类型报异常。当值为NULL时,该行不参与计算。 指定distinct关键字时表示计算唯一值的汇总值。
partition by col1[, col2..]
:指定开窗口的列。
order by col1 [asc|desc], col2[asc|desc]
:不指定order by时,返回当前窗口内expr的汇总值。指定order by时, 返回结果以指定的方式排序,并且返回当前窗口从首行至当前行的累计汇总值。
返回值
:输入参数是bigint返回bigint,输入参数为double或string时,返回double类型。
字符串函数
chr()
- 函数名称: chr
- 命令格式: string chr(bigint ascii)
- 用 途: 将给定ASCII码转换成字符
- 参数说明:
ascii
:Bigint类型ASCII值,若输入为bigint,decimal,double或datetime类型会隐式转换到bigint类型后参与运算,其它类型抛异常。
返回值
:String类型。参数范围是0~255,超过此范围会引发异常。输入值为NULL返回NULL。
concat()
- 函数名称: concat
- 命令格式: string concat(string a, string b...)
- 用 途: 连接字符串
- 参数说明:
a,b等为String类型,若输入为bigint,decimal,double或datetime类型会隐式转换为string后参与运算,其它类型报异常。
返回值
:String类型。如果没有参数或者某个参数为NULL,结果均返回NULL。
get_json_object()
- 函数名称: get_json_object
- 命令格式: string get_json_object(string json,string path)
- 用 途: 在一个标准json字符串中,按照path抽取指定的字符串
- 参数说明:
json
:String类型,标准的json格式字符串。
path
:String类型,用于描述在json中的path,以$开头。
返回值
:String类型
instr()
- 函数名称: instr
- 命令格式: bigint instr(string str1, string str2[, bigint start_position[, bigint nth_appearance]])
- 用 途: 计算一个子串str2在字符串str1中的位置
- 参数说明:
str1
:String类型,搜索的字符串,若输入为bigint,decimal,double或datetime类型会隐式转换为string后参与运算,其它类型报异常。
str2
:String类型,要搜索的子串,若输入为bigint,decimal,double或datetime类型会隐式转换为string后参与运算,其它类型报异常。
start_position
:Bigint类型,其它类型会抛异常,表示从str1的第几个字符开始搜索,默认起始位置是第一个字符位置1。开始位置如果小于等于0会引发异常。
nth_appearance
:Bigint类型,大于0,表示子串在字符串中的第nth_appearance次匹配的位置,如果nth_appearance为其它类型或小于等于0会抛异常。
返回值
:Bigint类型
is_encoding()
- 函数名称: is_encoding
- 命令格式: boolean is_encoding(string str, string from_encoding, string to_encoding)
- 用 途: 通常的用法是将from_encoding设为’utf-8’,to_encoding设为’gbk’
- 参数说明:
str
:String类型,输入为NULL返回NULL。空字符串则可以被认为属于任何字符集。
from_encoding,to_encoding
:String类型,源及目标字符集。输入为NULL返回NULL。
返回值
:Boolean类型,如果str能够成功转换,则返回true,否则返回false。
keyvalue()
- 函数名称: keyvalue
- 命令格式: keyvalue(string srcstr,string split1,string split2, string key)
keyvalue(string srcstr, string key) //split1 = "";"",split2 = "":""
- 用 途: 将srcStr按split1分成key-value对,按split2将key-value对分开,返回key所对应的value
- 参数说明:
srcStr
输入待拆分的字符串
key
返回该指定键的值
split1, split2
拆分的字符串,只有两个参数时,默认split1为’;’, split2为’:’。当某个被split1拆分后的字符串中有多个split2时,返回结果未定义
返回值
: String类型
Split1或split2 为NULL时,返回NULL.
srcStr,key为NULL或者没有匹配的key时,返回NULL
如果有多个key-value匹配,返回第一个匹配上的key对应的value
length()
- 函数名称: length
- 命令格式: bigint length(string str)
- 用 途: 返回字符串str的长度
- 参数说明:
str
:String类型,若输入为bigint,decimal,double或datetime类型会隐式转换为string后参与运算,其它类型报异常。
返回值
:Bigint类型。若str是NULL返回NULL。如果str非UTF-8编码格式,返回-1。
length()
- 函数名称: length
- 命令格式: bigint length(string str)
- 用 途: 返回字符串str的长度
- 参数说明:
str
:String类型,若输入为bigint,decimal,double或datetime类型会隐式转换为string后参与运算,其它类型报异常。
返回值
:Bigint类型。若str是NULL返回NULL。如果str非UTF-8编码格式,返回-1。
lengthb()
- 函数名称: lengthb
- 命令格式: bigint lengthb(string str)
- 用 途: 返回字符串str的以字节为单位的长度
- 参数说明:
str
:String类型,若输入为bigint,double或者datetime类型会隐式转换为string后参与运算,其它类型报异常。
返回值
:Bigint类型。若str是NULL返回NULL。
md5()
- 函数名称: md5
- 命令格式: string md5(string value)
- 用 途: 计算输入字符串value的md5值
- 参数说明:
value
:String类型,如果输入类型是bigint,decimal,double或者datetime会隐式转换成string类型参与运算,其它类型报异常。输入为NULL,返回NULL。
返回值
:String类型。
parse_url()
- 函数名称: parse_url
- 命令格式: string parse_url(string url, string part[,string key])
- 用 途: 对url的解析,按key提取信息
- 参数说明:
url或part为NULL则返回NULL,url为无效抛异常。
part
:String 类型,支持HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, 和 USERINFO,不区分大小写,不在此范围抛异常
当part为QUERY时根据key的值取出在query string中的value值,否则忽略key参数。
返回值
:String类型。
regexp_count()
- 函数名称: regexp_count
- 命令格式:
bigint regexp_count(string source, string pattern[, bigint start_position])
- 用 途: 计算source中从start_position开始,匹配指定模式pattern的子串的次数
- 参数说明:
source
:String类型,搜索的字符串,其它类型报异常。
pattern
:String类型常量,要匹配的模型,pattern为空串时抛异常,其它类型报异常。
start_position
:Bigint类型常量,必须大于0。其它类型或小于等于0时抛异常,不指定时默认为1,表示从source的第一个字符开始匹配。
返回值
:Bigint类型。没有匹配时返回0。任一输入参数为NULL返回NULL。
- 函数名称: regexp_extract
- 命令格式:
string regexp_extract(string source, string pattern[, bigint occurrence])
- 用 途: 将字符串source按照pattern正则表达式的规则拆分,返回第occurrence个group的字符
- 参数说明:
source
:String类型,待搜索的字符串。
pattern
:String类型常量,pattern为空串时抛异常,pattern中如果没有指定group,抛异常。
occurrence
:Bigint类型常量,必须>=0,其它类型或小于0时抛异常,不指定时默认为1,表示返回第一个group。若occurrence = 0,返回满足整个pattern的子串。
返回值
:String类型,任一输入为NULL返回NULL。
regexp_instr()
- 函数名称: regexp_instr
- 命令格式:
bigint regexp_instr(string source, string pattern[,
bigint start_position[, bigint nth_occurrence[, bigint return_option]])
- 用 途: 返回字符串source从start_position开始,和pattern第n次(nth_occurrence)匹配的子串的起始/结束位置。任一输入参数为NULL时返回NULL
- 参数说明:
source
:String类型,待搜索的字符串。
pattern
:String类型常量,pattern为空串时抛异常。
start_position
:Bigint类型常量,搜索的开始位置。不指定时默认值为1,其它类型或小于等于0的值会抛异常。
nth_occurrence
:Bigint类型常量,不指定时默认值为1,表示搜索第一次出现的位置。小于等于0或者其它类型抛异常。
return_option
:Bigint类型常量,值为0或1,其它类型或不允许的值会抛异常。0表示返回匹配的开始位置,1表示返回匹配的结束位置。
返回值
:Bigint类型。视return_option指定的类型返回匹配的子串在source中的开始或结束位置。
regexp_replace()
- 函数名称: regexp_replace
- 命令格式:
string regexp_replace(string source, string pattern, string replace_string[, bigint occurrence])
- 用 途: 将source字符串中第occurrence次匹配pattern的子串替换成指定字符串replace_string后返回
- 参数说明:
source
:String类型,要替换的字符串。
pattern
:String类型常量,要匹配的模式,pattern为空串时抛异常。
replace_string
:String类型,将匹配的pattern替换成的字符串。
occurrence
:Bigint类型常量,必须大于等于0,表示将第几次匹配替换成replace_string,为0时表示替换掉所有的匹配子串。 其它类型或小于0抛异常。可缺省,默认值为0。
返回值
:String类型,当引用不存在的组时,不进行替换。当输入source,pattern,occurrence参数为NULL时返回NULL, 若replace_string为NULL且pattern有匹配,返回NULL,replace_string为NULL但pattern不匹配,则返回原串 。
regexp_substr()
- 函数名称: regexp_substr
- 命令格式: string regexp_substr(string source, string pattern[, bigint start_position[, bigint nth_occurrence]])
- 用 途: 从start_position位置开始,source中第nth_occurrence次匹配指定模式pattern的子串
- 参数说明:
source
:String类型,搜索的字符串。
pattern
:String类型常量,要匹配的模型,pattern为空串时抛异常。
start_position
:Bigint常量,必须大于0。其它类型或小于等于0时抛异常,不指定时默认为1,表示从source的第一个字符开始匹配。不指定时默认为1, 表示从source的第一个字符开始匹配。
nth_occurrence
:Bigint常量,必须大于0,其它类型或小于等于0时抛异常。不指定时默认为1,表示返回第一次匹配的子串。不指定时默认为1, 表示返回第一次匹配的子串。
返回值
:String类型。任一输入参数为NULL返回NULL。没有匹配时返回NULL。
split_part()
- 函数名称: split_part
- 命令格式: string split_part(string str, string separator, bigint start[, bigint end])
- 用 途: 依照分隔符separator拆分字符串str,返回从第start部分到第end部分的子串(闭区间)
- 参数说明:
Str
:String类型,要拆分的字符串。如果是bigint,decimal,double或者datetime类型会隐式转换到string类型后参加运算,其它类型报异常。
Separator
:String类型常量,拆分用的分隔符,可以是一个字符,也可以是一个字符串,其它类型会引发异常。
start
:Bigint类型常量,必须大于0。非常量或其它类型抛异常。返回段的开始编号(从1开始),如果没有指定end,则返回start指定的段。
end
:Bigint类型常量,大于等于start,否则抛异常。返回段的截止编号,非常量或其他类型会引发异常。可省略,缺省时表示最后一部分。
返回值
:String类型。若任意参数为NULL,返回NULL;若separator为空串,返回原字符串str。
substr()
- 函数名称: substr
- 命令格式: string substr(string str, bigint start_position[, bigint length])
- 用 途: 返回字符串str从start_position开始长度为length的子串
- 参数说明:
str
:String类型,若输入为bigint,decimal,double或者datetime类型会隐式转换为string后参与运算,其它类型报异常。
start_position
:Bigint类型,当start_position为负数时表示开始位置是从字符串的结尾往前倒数,最后一个字符是-1,起始位置为1。其它类型抛异常。
length
:Bigint类型,大于0,其它类型或小于等于0抛异常。子串的长度。
返回值
:String类型。若任一输入为NULL,返回NULL。
tolower()
- 函数名称: tolower
- 命令格式: string tolower(string source)
- 用 途: 输出英文字符串source对应的小写字符串
- 参数说明:
source
:String类型,若输入为bigint,decimal,double或者datetime类型会隐式转换为string后参与运算,其它类型报异常。
返回值
:String类型。输入为NULL时返回NULL。
toupper()
- 函数名称: toupper
- 命令格式: string toupper(string source)
- 用 途: 输出英文字符source串对应的大写字符串
- 参数说明:
source
:String类型,若输入为bigint,decimal,double或者datetime类型会隐式转换为string后参与运算,其它类型报异常。
返回值
:String类型。输入为NULL时返回NULL。
to_char()
- 函数名称: to_char
- 命令格式:
string to_char(boolean value)
string to_char(bigint value)
string to_char(double value)
- 用 途: 将Boolean类型、bigint类型、decimal类型或者double类型转为对应的string类型表示
- 参数说明:
value
:可以接受boolean类型、bigint类型或者double类型输入,其它类型抛异常。对datetime类型的格式化输出请参考另一同名函数 TO_CHAR 。
返回值
:String类型。如果输入为NULL,返回NULL。
trim()
- 函数名称: trim
- 命令格式: string trim(string str)
- 用 途: 将输入字符串str去除左右空格
- 参数说明:
str
:String类型,若输入为bigint,decimal,double或者datetime类型会隐式转换为string后参与运算,其它类型报异常。
返回值
:String类型。输入为NULL时返回NULL。
url_decode()
- 函数名称: url_decode
- 命令格式: string url_decode(string input[, string encoding])
- 用 途: 将输入字符串从application/x-www-form-urlencoded MIME格式转为正常字符串,是url_encoding的逆过程
url_encode()
数学函数
abs()
- 函数名称: abs
- 命令格式:
double abs(double number)
bigint abs(bigint number)
- 用 途: 计算绝对值
acos()
- 函数名称: acos
- 命令格式:
double acos(double number)
decimal acos(decimal number)
- 用 途: 计算反余弦
asin()
- 函数名称: asin
- 命令格式:
double asin(double number)
decimal asin(decimal number)
- 用 途: 计算反正弦
atan()
- 函数名称: atan
- 命令格式:
double atan(double number)
decimal atan(decimal number)
- 用 途: 计算反正切
ceil()
- 函数名称: ceil
- 命令格式:
bigint ceil(double value)
bigint ceil(decimal value)
- 用 途: 返回不小于输入值value的最小整数
conv()
- 函数名称: conv
- 命令格式: string conv(string input, bigint from_base, bigint to_base)
- 用 途: 进制转换函数
- 参数说明:
input
:以string表示的要转换的整数值,接受bigint,double的隐式转换。
from_base,to_base
:以十进制表示的进制的值,可接受的的值为2,8,10,16。接受string及double的隐式转换。
to_base,to_base
:以十进制表示的进制的值,可接受的的值为2,8,10,16。接受string及double的隐式转换。
返回值
:String类型。任一输入为NULL,返回NULL。转换过程以64位精度工作,溢出时报异常。输入如果是负值,即以’-‘开头,报异常。 如果输入的是小数,则会转为整数值后进行进制转换,小数部分会被舍弃。
cos()
- 函数名称: cos
- 命令格式:
double cos(double number)
decimal cos(decimal number)
- 用 途: 余弦函数
cosh()
- 函数名称: cosh
- 命令格式:
double cosh(double number)
decimal cosh(decimal number)
- 用 途: 双曲余弦函数
cot()
- 函数名称: cot
- 命令格式:
double cot(double number)
decimal cot(decimal number)
- 用 途: 余切函数
exp()
- 函数名称: exp
- 命令格式:
double exp(double number)
decimal exp(decimal number)
- 用 途: 指数函数
floor()
- 函数名称: floor
- 命令格式:
bigint floor(double number)
bigint floor(decimal number)
- 用 途: 向下取整,返回比number小的整数值
ln()
- 函数名称: ln
- 命令格式:
double ln(double number)
decimal ln(decimal number)
- 用 途: 返回number的自然对数
log()
- 函数名称:log
- 命令格式:
double log(double base, double x)
decimal log(decimal base, decimal x)
- 用 途: 返回以base为底的x的对数
- 参数说明:
base
:Double类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
x
:Double类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
返回值
:Double类型或Decimal类型的对数值,若base和x中存在NULL,则返回NULL;若base和x中某一个值为负数或0,会引发异常;若base为1(会引发一个除零行为)也会引发异常。
ln()
- 函数名称: ln
- 命令格式:
double ln(double number)
decimal ln(decimal number)
- 用 途: 返回number的自然对数
pow()
- 函数名称: pow
- 命令格式:
double pow(double x, double y)
decimal pow(decimal x, decimal y)
- 用 途: 返回x的y次方,即x^y
rand()
- 函数名称: rand
- 命令格式:
double rand(bigint seed)
decimal rand(decimal seed)
- 用 途: 以seed为种子返回double类型的随机数,返回值区间是的0~1
round()
- 函数名称: round
- 命令格式:
double round(double number, [bigint decimal_places])
decimal round(decimal number, [bigint decimal_places])
- 用 途: 四舍五入到指定小数点位置
- 参数说明:
number
:Double类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
decimal_place
:Bigint类型常量,四舍五入计算到小数点后的位置,其他类型参数会引发异常. 如果省略表示四舍五入到个位数。默认值为0。 返回值
:返回Double类型或Decimal类型。若number或decimal_places为NULL,返回NULL。
备注
: decimal_places可以是负数。负数会从小数点向左开始计数,并且不保留小数部分;如果decimal_places超过了整数部分长度,返回0.
sin()
- 函数名称:sin
- 命令格式:
double sin(double number)
decimal sin(decimal number)
- 用 途: 正弦函数
sinh()
- 函数名称: sinh
- 命令格式:
double sinh(double number)
decimal sinh(decimal number)
- 用 途: 双曲正弦函数
sqrt()
- 函数名称: sqrt
- 命令格式:
double sqrt(double number)
decimal sqrt(decimal number)
- 用 途: 计算平方根
tan()
- 函数名称: tan
- 命令格式:
double tan(double number)
decimal tan(decimal number)
- 用 途: 正切函数,输入为弧度值
tanh()
- 函数名称: tanh
- 命令格式:
double tanh(double number)
decimal tanh(decimal number)
- 用 途: 双曲正切函数
trunc()
- 函数名称: trunc
- 命令格式:
double trunc(double number[, bigint decimal_places])
decimal trunc(decimal number[, bigint decimal_places]
- 用 途: 将输入值number截取到指定小数点位置
聚合函数
avg()
- 函数名称: avg
- 命令格式:
double avg(double value)
decimal avg(decimal value)
- 用 途: 计算平均值
count()
- 函数名称: count
- 命令格式: bigint count([distict|all] value)
- 用 途: 计算记录数
max()
- 函数名称: max
- 命令格式: max(value)
- 用 途: 计算最大值
- 函数名称: median
- 命令格式:
double median(double number)
decimal median(decimal number)
- 用 途: 计算中位数
min()
- 函数名称: min
- 命令格式: min(value)
- 用 途: 计算最小值
stddev()
- 函数名称: stddev
- 命令格式:
double stddev(double number)
decimal stddev(decimal number)
- 用 途: 计算总体标准差
stddev_samp()
- 函数名称: stddev_samp
- 命令格式:
double stddev_samp(double number)
decimal stddev_samp(decimal number)
- 用 途: 计算样本标准差
sum()
- 函数名称: sum
- 命令格式: sum(value)
- 用 途: 计算汇总值
wm_concat()
- 函数名称: wm_concat
- 命令格式: string wm_concat(string separator, string str)
- 用 途: 用指定的seperator做分隔符,连接str中的值
其他函数
cast()
- 函数名称: cast
- 命令格式: cast(expr as )
- 用 途: 将表达式的结果转换成目标类型
coalesce()
- 函数名称: coalesce
- 命令格式: coalesce(expr1, expr2, ...)
- 用 途:返回列表中第一个非NULL的值,如果列表中所有的值都是NULL则返回NULL
decode()
- 函数名称: decode
- 命令格式: decode(expression, search, result[, search, result]...[, default])
- 用 途: 实现分支选择的功能
greatest()
- 函数名称: greatest
- 命令格式: greatest(var1, var2, …)
- 用 途: 返回输入参数中最大的一个
least()
- 函数名称: least
- 命令格式: least(var1, var2, …)
- 用 途: 返回输入参数中最小的一个
ordinal()
- 函数名称: ordinal
- 命令格式: ordinal(bigint nth, var1, var2, …)
- 用 途:将输入变量按从小到大排序后,返回nth指定的位置的值
sample()
- 函数名称: sample
- 命令格式: boolean sample(x, y, column_name)
- 用 途:对所有读入的column_name的值,sample根据x,y的设置做采样,并过滤掉不满足采样条件的行
uuid()
- 函数名称: uuid
- 命令格式: string uuid()
- 用 途: 返回一个UUID字符串