【Hive-Hive函数大全】Hive函数的语法使用和举例描述
- 1)关系运算:
- 2)数学运算:
- 3)数值计算
-
- 3.1.取整函数:round
- 3.2.指定精度取整函数:round
- 3.3.向下取整函数:floor
- 3.4.向上取整函数:ceil
- 3.5.向上取整函数:ceiling
- 3.6.取随机数函数:rand
- 3.7.自然指数函数:exp
- 3.8.自然对数函数:ln
- 3.9.对数函数:log
- 3.10.幂运算函数:pow,power
- 3.11.开平方函数:sqrt
- 3.12.二进制函数:bin
- 3.13.十六进制函数:hex
- 3.14.反转十六进制函数:unhex
- 3.15.进制转换函数:conv
- 3.16.绝对值函数:abs
- 3.17.正取余函数:pmod
- 3.18.正弦函数:sin
- 3.19.反正弦函数:asin
- 3.20.余弦函数:cos
- 3.21.反余弦函数:acos
- 3.22.positive 函数:positive
- 3.23.negative 函数:negative
- 4)日期函数
-
- 4.1.UNIX 时间戳转日期函数:from_unixtime
- 4.2.获取当前 UNIX 时间戳函数:unix_timestamp
- 4.3.日期转 UNIX 时间戳函数:unix_timestamp
- 4.4.指定格式日期转 UNIX 时间戳函数:unix_timestamp
- 4.5.日期时间转日期函数:to_date
- 4.6.日期转年函数:year
- 4.7.日期转月函数:month
- 4.8.日期转天函数:day
- 4.9.日期转小时函数:hour
- 4.10.日期转分钟函数:minute
- 4.11.日期转秒函数:second
- 4.12.日期转周函数:weekofyear
- 4.13.日期比较函数:datediff
- 4.14.日期增加函数:date_add
- 4.15.日期减少函数:date_sub
- 5)条件函数
- 6)字符串函数
-
- 6.1.字符串长度函数:length
- 6.2.字符串反转函数:reverse
- 6.3.字符串连接函数:concat
- 6.4.带分隔符字符串连接函数:concat_ws
- 6.5.字符串截取函数:substr,substring
- 6.6.字符串截取函数:substr,substring
- 6.7.字符串转大写函数:upper,ucase
- 6.8.字符串转小写函数:lower,lcase
- 6.9.去空格函数:trim,ltrim,rtrim
- 6.10.正则表达式替换函数:regexp_replace
- 6.11.正则表达式解析函数:regexp_extract
- 6.12.URL 解析函数:parse_url
- 6.13.json 解析函数:get_json_object
- 6.14.空格字符串函数:space
- 6.15.重复字符串函数:repeat
- 6.16.首字符 ascii 函数:ascii
- 6.17.左补足函数:lpad
- 6.18.右补足函数:rpad
- 6.19.分割字符串函数:split
- 6.20.集合查找函数:find_in_set
- 7)集合统计函数
- 8)复合类型构建操作
- 9)复杂类型访问操作
- 10)复杂类型长度统计函数
- 11)脱敏函数
1)关系运算:
1.1.Like比较:Like
语法:A LIKE B
操作类型:strings
描述:_
表示任意单个字符,%
表示任意数量的字符
举例:
select 1 from lxw_dual where 'football' like 'foot%';
select 1 from lxw_dual where 'football' like 'foot_';
注意:否定比较时候用NOT A LIKE B
select 1 from lxw_dual where NOT 'football' like 'fff%';
1.2.JAVA 的 LIKE 操作:RLIKE
语法:A RLIKE B
操作类型:strings
描述: 功能与 REGEXP
相同
举例:
select 1 from lxw_dual where 'footbar’ rlike '^f.*r$’;
注意:判断一个字符串是否全为数字
select 1 from lxw_dual where '123456' rlike '^\\d+$';
select 1 from lxw_dual where '123456aa' rlike '^\\d+$';
1.3.REGEXP 操作:REGEXP
语法:A REGEXP B
操作类型:strings
描述: 功能与 RLIKE
相同
举例:
select 1 from lxw_dual where 'footbar' REGEXP '^f.*r$';
2)数学运算:
2.1.取余操作:%
语法:A % B
操作类型:所有数值类型
说明:返回 A 除以 B 的余数
举例:
select 41 % 5 from lxw_dual;
--1
select 8.4 % 4 from lxw_dual;
--0.40000000000000036
注意:精度在 hive 中是个很大的问题,类似这样的操作最好通过 round 指定精度
select round(8.4 % 4 , 2) from lxw_dual;
--0.4
2.2.位与操作:&
语法:A & B
操作类型:所有数值类型
说明:A B 按照二进制
进行&
计算,得到一个新的二进制结果
举例:
select 4 & 8 from lxw_dual;
--0
select 6 & 4 from lxw_dual;
--4
2.3.位或操作:|
语法:A | B
操作类型:所有数值类型
说明:A 与 B 按照二进制
进行|
计算,得到一个新的二进制结果
举例:
select 4 | 8 from lxw_dual;
--12
select 6 | 8 from lxw_dual;
--14
2.4.位异或操作:^
语法: A ^ B
操作类型:所有数值类型
说明:A 与 B按照二进制进行^
计算,有一个值为1
那么结果为1
,否则结果为0
,得到一个新的二进制结果
举例:
select 4 ^ 8 from lxw_dual;
--12
select 6 ^ 4 from lxw_dual;
--2
3)数值计算
3.1.取整函数:round
语法:round(double a)
返回值:BIGINT
说明:返回 double 类型的整数值部分 (遵循四舍五入)
举例:
select round(3.1415926) from lxw_dual;
--3
select round(3.5) from lxw_dual;
--4
create table lxw_dual as select round(9542.158) from lxw_dual;
describe lxw_dual;
--_c0 bigint
3.2.指定精度取整函数:round
语法:round(double a, int d)
返回值:DOUBLE
说明:返回指定精度 d 的 double 类型
举例:
select round(3.1415926,4) from lxw_dual;
3.1416
3.3.向下取整函数:floor
语法:floor(double a)
返回值:BIGINT
说明:返回等于或者小于该 double 变量的最大的整数
举例:
select floor(3.1415926) from lxw_dual;
--3
select floor(25) from lxw_dual;
--25
3.4.向上取整函数:ceil
语法:ceil(double a)
返回值:BIGINT
说明:返回等于或者大于该 double 变量的最小的整数
举例:
select ceil(3.1415926) from lxw_dual;
--4
select ceil(46) from lxw_dual;
--46
3.5.向上取整函数:ceiling
语法:ceiling(double a)
返回值:BIGINT
说明:与 ceil 功能相同
举例:
select ceiling(3.1415926) from lxw_dual;
--4
select ceiling(46) from lxw_dual;
--46
3.6.取随机数函数:rand
语法:rand()
,rand(int seed)
返回值:double
说明:返回一个 0 到 1 范围内的随机数。如果指定种子 seed,则会等到一个稳定的随机数序列
举例:
select rand() from lxw_dual;
--0.5577432776034763
select rand() from lxw_dual;
--0.6638336467363424
select rand(100) from lxw_dual;
--0.7220096548596434
select rand(100) from lxw_dual;
--0.7220096548596434
3.7.自然指数函数:exp
语法:exp(double a)
返回值:double
说明:返回自然对数 e 的 a 次方
举例:
select exp(2) from lxw_dual;
--7.38905609893065
3.8.自然对数函数:ln
语法:ln(double a)
返回值:double
说明:返回 a 的自然对数
举例:
select ln(7.38905609893065) from lxw_dual;
--2.0
3.9.对数函数:log
(1)以 10 为底对数函数:log10
语法:log10(double a)
返回值:double
说明:返回以 10 为底的 a 的对数
举例:
select log10(100) from lxw_dual;
--2.0
(2)以 2 为底对数函数:log2
语法:log2(double a)
返回值:double
说明:返回以 2 为底的 a 的对数
举例:
select log2(8) from lxw_dual;
--3.0
(3)对数函数:log
语法:log(double base, double a)
返回值:double
说明:返回以 base 为底的 a 的对数
举例:
select log(4,256) from lxw_dual;
--4.0
3.10.幂运算函数:pow,power
(1)pow
语法:pow(double a, double p)
返回值:double
说明:返回 a 的 p 次幂
举例:
select pow(2,4) from lxw_dual;
--16.0
(2)power
语法:power(double a, double p)
返回值:double
说明:返回 a 的 p 次幂,与 pow 功能相同
举例:
select power(2,4) from lxw_dual;
--16.0
3.11.开平方函数:sqrt
语法:sqrt(double a)