hive内置函数(二):数值处理和字符串处理函数

hive内置函数(二):数值处理和字符串处理函数

hive内置函数可分为以下几大类,本文重点介绍hive内置函数的数值处理函数和字符串处理函数。其他类别的函数请查阅我的专栏:数据分析和挖掘专栏

3. 数值处理函数

  1. %

语法:X % Y,X、Y数值型。

功能:返回X除以Y后的余数。

说明:与pmod的功能一致。

hive> select 11 % 10;
1

2. abs

语法:abs(X),X是数值型字符。

功能:返回X的绝对值。

hive> select abs(-3);
3

3. acos

语法:acos(X),X是数值型字符。

功能:如果-1<=X<=1,返回X的反余弦值。否则返回NaN。

hive> select acos(0.8);
0.6435011087932843

4. asin

语法:asin(X),X是数值型字符。

功能:如果-1<=X<=1,返回X的反正弦值。否则返回NaN。

hive> select asin(0.8);
0.9272952180016123

5. atan

语法:atan(X),X是数值型字符。

功能:返回X的反正切值。

hive> select atan(0.75);
0.6435011087932844

6. bin

语法:bin(X),X是整型。

功能:返回X的二进制表示。

hive> select bin(18);
10010

7. ceil

语法:ceil(X),X是数值型字符。

功能:向上取整,返回大于或等于X最小整数。

说明:和 ceiling功能和用法一致。

hive> select ceil(3.12);
4

8. ceiling

语法:ceiling(X),X是数值型字符。

功能:向上取整,返回大于或等于X最小整数。

说明:和 ceil功能和用法一致。

hive> select ceiling(3.88);
4

9. conv

语法:conv(X,from,to),X是整型,from、to也是整型。

功能:进制转换函数,将X从from进制转换成to进制。

hive> select conv(8,10,2);
1000

10. cos

语法:cos(X),X是数值型字符。

功能:返回X的余弦值,X是弧度制。

hive> select cos(0.6435011087932843);
0.8

11. exp

语法:exp(X),X是数值型字符。

功能:返回以e(自然对数)为底的X次幂。

hive> select exp(3);
20.085536923187668

12. floor

语法:floor(X),X是数值型字符。

功能:向下取整,返回小于或等于X最大整数。

hive> select floor(3.88);
3

13. hex

语法:hex(X),X可以是整型,也可以是string型。

功能:返回X的十六进制表示。

hive> select hex('xiaoxian');
7869616F7869616E

14. log

语法:log(X,Y),X、Y是数值型字符。

功能:返回以X为底的Y的对数。

hive> select log(2,8);
3.0

15. log10

语法:log10(X),X是数值型字符。

功能:返回以10为底的X的对数。

hive> select log10(100);
2.0

16. log2

语法:log2(X),X是数值型字符。

功能:返回以2为底的X的对数。

hive> select log2(8);
3.0

17. negative

语法:negative(X),X是数值型字符。

功能:返回X的相反数。

hive> select negative(3.88);
-3.88

18. pmod

语法:pmod(X,Y),X,Y是数值型字符。

功能:返回X除以Y的余数。

说明:与 % 的功能一致。

hive> select pmod(5,-3);
-1
hive> select pmod(5,3);
2

19. positive

语法:positive(X),X是任意字符。

功能:返回X本身。

hive> select positive(3.88);
3.88
hive> select positive('xiaoxian');
xiaoxian

20. pow

语法:pow(X,Y),X、Y是数值型字符。

功能:返回以X为底的Y次幂。

hive> select pow(2,3);
8.0

21. power

语法:power(X,Y),X、Y是数值型字符。

功能:返回以X为底的Y次幂。

说明:和 pow功能和用法一致。

hive> select power(2,3);
8.0

22. rand

语法:rand(X),X是整型。

功能:返回0到1之间的随机数。

hive> select rand();
0.7096534319892781
hive> select rand(100);
0.7220096548596434

23. round

语法:round(X,Y),X是数值型字符,Y是整型。

功能:对X进行四舍五入,Y是要保留的小数位数,Y如果省略则表示对X进行四舍五入取整。

hive> select round(3.88,1);
3.9
hive> select round(3.88);
4.0

24. sin

语法:sin(X),X是数值型字符。

功能:返回X的正弦值,X是弧度制。

hive> select sin(0.9272952180016123);
0.8

25. sqrt

语法:sqrt(X),X是数值型字符。

功能:返回X的平方根。

hive> select sqrt(16);
4

26. tan

语法:tan(X),X是数值型字符。

功能:返回X的正切值,X是弧度制。

hive> select tan(0.6435011087932844);
0.75

27. unhex

语法:unhex(X),X是string型。

功能:X代表十六进制的字串,返回此十六进制的二进制表示。

hive> select unhex('7869616F7869616E');
xiaoxian

4. 字符串处理函数

  1. concat

语法:concat(s1,s2,s3,…),s1,s2,s3,…是任意string字符或字符串,也可以是数值型字符或字符串。

功能:返回s1,s2,s3,…拼接后的字符串。

hive> select concat('xiao', 'xian',8);
xiaoxian8

2. concat_ws

语法:concat_ws(sep,s1,s2,s3,…),sep,s1,s2,s3,…是任意string字符或字符串,不可以是数值型字符或字符串。

功能:返回以sep作为分隔符,将s1,s2,s3,…拼接后的字符串。

hive> select concat_ws('_','xiao', 'xian','8');
xiao_xian_8

3. find_in_set

语法:find_in_set (str,str_array),str,str_array是任意string字符或字符串。

功能:返回以str第一次在str_array中出现位置的下标,str_array是逗号分隔的字符串。如果str和str_array有任何一个为null,则返回null;如果str中含有逗号,则返回0;如果在str_array中没有找到str,则返回0。

hive> select find_in_set('xiao','xue,shan,xiao,xian');
3

4. get_json_object

语法:get_json_object (json_txt, path),json_txt是一个json字符串,path是任意string字符或字符串。

功能:返回json体json_txt中以path为key的内容。

hive> select get_json_object('{"xian":"1","xiao":"2"}','$.xiao');
2

5. lcase

语法:lcase(str),str是任意string字符或字符串。

功能:返回str的小写形式。

说明:和 lower功能和用法一致。

hive> select lcase('XueShan_XiaoXian');
xueshan_xiaoxian

6. length

语法:length(s),s是任意字符或字符串。

功能:返回s的长度。

hive> select length(123);
3

7. lower

语法:lower(str),str是任意string字符或字符串。

功能:返回str的小写形式。

说明:和 lcase功能和用法一致。

hive> select lower('XueShan_XiaoXian');
xueshan_xiaoxian

8. lpad

语法:lpad(str, len, pad),str、pad是任意string字符或字符串,len是整型。

功能:在str的左侧,用pad补足至len长度。返回补足后的字符串。

hive> select lpad('xian',9,'xiao');
xiaoxxian

9. ltrim

语法:ltrim(str),str是任意string字符或字符串。

功能:移除str的左侧空字符。

hive> select ltrim(' xiao xian');
xiao xian

10. parse_url

语法:parse_url(url, partToExtract[, key])。

功能:返回url指定的部分,partToExtract为指定的key,可以为HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO。注意partToExtract必须大写。

hive> select parse_url('https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1&tn=baidu',' PROTOCOL');
https

11. regexp_extract

语法:regexp_extract(str, regexp, idx),str是任意string字符或字符串,regexp是正则表达式,idx是从0开始的整型。

功能:将str按照正则regexp的规则拆分,正则regexp里的小括号代表拆分后的子字串,返回位置下标为idx的子字串。如果idx是0,则返回与regexp匹配的整个字串。如果idx省略,则返回下标为1的子字串。

hive> select regexp_extract('Xiao_XIan','(Xiao)_([A-Z]*).*',2);
XI
--解释:正则'(Xiao)_([A-Z]*).*'中有两个小括号,第一个小括号匹配到原字符串中的子字串'Xiao',第二个小括号匹配到'XI'。下标是2,所以返回第二个小括号匹配到的子字符串'XI'。
hive> select regexp_extract('Xiao_XIan','(Xiao)_([A-Z]*)',0);
Xiao_XI
hive> select regexp_extract('Xiao_XIan','(Xiao)_([A-Z]*)');
Xiao

12. regexp_replace

语法:regexp_replace(str, regexp, rep),str是任意string字符或字符串,regexp是正则表达式,rep是任意string字符或字符串。

功能:将str中匹配正则regexp的部分替换为rep。

hive> select regexp_replace('Xiao_XIan','[A-Z]','8');
8iao_88ian

13. repeat

语法:repeat(str, n),str是任意string字符或字符串,n是整型。

功能:返回str重复n次后的字串。

hive> select repeat('xiao_xian',3);
xiao_xianxiao_xianxiao_xian

14. reverse

语法:reverse(str),str是任意string字符或字符串。

功能:返回str反转后的字串。

hive> select reverse('xiao_xian');
naix_oaix

15. rpad

语法:rpad(str, len, pad),str、pad是任意string字符或字符串,len是整型。

功能:在str的右侧,用pad补足至len长度。返回补足后的字符串。

hive> select rpad('xian',9,'xiao');
xianxiaox

16. rtrim

语法:rtrim(str),str是任意string字符或字符串。

功能:移除str的右侧空字符。

hive> select rtrim('xiao xian  ');
xiao xian

17. space

语法:space(n),n是整型。

功能:返回长度为n个空字串。

hive> select space(-3);

18. split

语法:split(str, regex),str和regex是任意string字符或字符串。

功能:返回str按regex分割后的子字串组成的数组。

hive> select split('xiao_xian', '_');
["xiao","xian"]
hive> select split('xiao_xian', '_')[1];
xian

19. substr

语法:substr(str, pos, len),str是任意string字符或字符串,pos和len是整型。

功能:从str下标为pos的字符开始取长度为len的子字符串,返回这个子字符串。如果len省略,则返回从str下标为pos的字符开始到结尾的字串。

说明:和 substring功能和用法一致。

hive> select substr('xiao_xian',3,2);
ao
hive> select substr('xiao_xian',3);
ao_xian

20. substring

语法:substring(str, pos, len),str是任意string字符或字符串,pos和len是整型。

功能:从str下标为pos的字符开始取长度为len的子字符串,返回这个子字符串。如果len省略,则返回从str下标为pos的字符开始到结尾的字串。

说明:和 substr功能和用法一致。

hive> select substring('xiao_xian',3,2);
ao
hive> select substring('xiao_xian',3);
ao_xian

21. trim

语法:trim(str),str是任意string字符或字符串。

功能:移除str两边的空字符。

hive> select trim(' xiao xian  ');
xiao xian

22. ucase

语法:ucase(str),str是任意string字符或字符串。

功能:返回str的大写形式。

说明:和upper功能和用法一致。

hive> select ucase('XueShan_XiaoXian');
XUESHAN_XIAOXIAN

23. upper

语法:upper(str),str是任意string字符或字符串。

功能:返回str的大写形式。

说明:和ucase功能和用法一致。

hive> select upper('XueShan_XiaoXian');
XUESHAN_XIAOXIAN


以上是本文全部内容。码字不易,如果您对本文内容感兴趣,请给个赞同~

文中如有疏漏之处欢迎批评指正~

如果有任何问题,请在评论区留言~

如需转载,请与我取得联系~

编辑于 2021-09-11 16:53