HiveQL函数6—字符串函数

目录

1. ascii(string str)

返回值:int
功能:返回str中首个ASCII字符的整数值
示例:

> select ascii('Hive') as f1;
+-----+
| f1  |
+-----+
| 72  |
+-----+

2.base64(binary bin)

返回值:string
功能:将二进制bin转换为base 64位的字符串
示例:

> select base64(unbase64('Hive')) as f1;
+-------+
|  f1   |
+-------+
| Hive  |
+-------+

补充:Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。参考:https://baike.baidu.com/item/base64/8545775?fr=aladdin

3.character_length(string str)

返回值:int
功能:返回str中UTF-8字符的个数(从Hive2.2.0开始),char_length是该函数的简写
示例:

> select character_length('Hive') as f1;
+-----+
| f1  |
+-----+
| 4   |
+-----+

> select char_length('Hive') as f1;
+-----+
| f1  |
+-----+
| 4   |
+-----+

4.chr(bigint|double A)

返回值:string
功能:返回二进制等价于A的ASCII字符(从Hive1.3.0和2.1.0开始),如果A大于256,返回的结果将等价于chr(A % 256)
示例:

> select chr(100) as f1;
+-----+
| f1  |
+-----+
| d   |
+-----+

> select chr(356) as f1;
+-----+
| f1  |
+-----+
| d   |
+-----+

5.concat(string|binary A, string|binary B…)

返回值:string
功能:对字符串或二进制字节按序拼接
示例:

> select concat('H','i','ve') as f1;
+-------+
|  f1   |
+-------+
| Hive  |
+-------+

6.context_ngrams(array<array<string>>, array<string>, int K, int pf)

返回值:array<struct<string,double>>
功能:与 sentences()函数一起使用,分词后,统计分词结果中与数组中指定的单词一起出现(包括顺序)频次最高的 TOP-K 结果。详请参考StatisticsAndDataMining
示例:

> select context_ngrams(sentences('hello word!hello hive,hi hive,hello hive'),array('hello',null),3) as f1;
+----------------------------------------------------+
|                         f1                         |
+----------------------------------------------------+
| [{"ngram":["hive"],"estfrequency":2.0},{"ngram":["word"],"estfrequency":1.0}] |
+----------------------------------------------------+

该示例中统计的是与’hello’一起出现,并且在 hello 后面的频次最高的TOP-3,结果中,hello 与 hive 同时出现 2 次,hello 与 word 同时出现 1 次。

7.concat_ws(string SEP, string A, string B…)

返回值:string
功能:与concat()类似,但使用指定的分隔符
示例:

> select concat_ws('--','H','i','ve') as f1;
+-----------+
|    f1     |
+-----------+
| H--i--ve  |
+-----------+

8.concat_ws(string SEP, array)

返回值:string
功能:与上面的concat_ws()类似,但操作的对象是array
示例:

> select concat_ws('--',array('Hive','Hadoop')) as f1;
+---------------+
|      f1       |
+---------------+
| Hive--Hadoop  |
+---------------+

9.decode(binary bin, string charset)

返回值:string
功能:使用指定的字符集charset将二进制值bin解码成字符串,支持的字符集有: ‘US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-16BE’, ‘UTF-16LE’, ‘UTF-16’,如果任意一个参数为NULL都将返回NULL
示例:

> select decode(encode("Hive","UTF-8"),"US-ASCII") as f1;
+-------+
|  f1   |
+-------+
| Hive  |
+-------+

10.elt(N int,str1 string,str2 string,str3 string,…)

返回值:string
功能:返回位置N的字符串,如果N小于1或者大于字符串的个数则返回NULL。见 https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_elt
示例:

> select elt(3,"Hive","Hadoop","Hbase") as f1;
+--------+
|   f1   |
+--------+
| Hbase  |
+--------+

11.encode(string src, string charset)

返回值:binary
功能:对字符串src,按照指定字符集charset进行编码,支持的字符集有: ‘US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-16BE’, ‘UTF-16LE’, ‘UTF-16’,如果任意一个参数为NULL都将返回NULL
示例:

> select encode("Hive","UTF-16LE") as f1;
+-----------+
|    f1     |
+-----------+
| Hive  |
+-----------+

12. field(val T,val1 T,val2 T,val3 T,…)

返回值:int
功能:返回第一个参数val在其余参数列表中的位置。如果没有找到则返回0。支持所有的原始类型,参数直接的比较使用str.equals(x)函数,如果val为NULL则返回0。见 https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field
示例:

> select field("Hadoop","Hive","Hadoop","Hbase") as f1;
+-----+
| f1  |
+-----+
| 2   |
+-----+

13.find_in_set(string str, string strList)

返回值:int
功能:返回str在strList中首次出现的位置,strList是一个逗号分隔的字符串。任意参数为null则返回null,如果str中包含有逗号则返回0.
示例:

> select find_in_set('ab', 'abc,b,ab,c,def') as f1;
+-----+
| f1  |
+-----+
| 3   |
+-----+

14.format_number(number x, int d)

返回值:string
功能:将数值X转换成"#,###,###.##"格式字符串,并保留d位小数,如果d为0,将进行四舍五入且不保留小数
示例:

> select format_number(147842,2) as f1;
+-------------+
|     f1      |
+-------------+
| 147,842.00  |
+-------------+

15.get_json_object(string json_string, string path)

返回值:string
功能:解析 json 的字符串json_string,返回 path 指定的内容。如果输入的 json 字符串无效,那么返回 NULL。注意JSON path字符串只能由数字 字母 下划线组成,即不能有大写字母和特殊字符,同时key不能由数字开头,这是由于Hive对列名的限制导致。
示例:

>select get_json_object('{"store":
{"fruit":\[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],
"bicycle":{"price":19.95,"color":"red"}},
"email":"amy@only_for_json_udf_test.net",
"owner":"amy"}','$.owner') as f1;
+------+
|  f1  |
+------+
| amy  |
+------+

16.in_file(string str, string filename)

返回值:boolean
功能:如果名为filename的文件中有一行数据与字符串str相等就返回true
示例: ??

17.instr(string str, string substr)

返回值:int
功能:返回substr在str中第一次出现的位置,任意参数为null则返回null,如果str中不包含substr则返回0。注意起始位置是从1开始的。
示例:

> select instr('dfabc','abc') as f1;
+-----+
| f1  |
+-----+
| 3   |
+-----+

18.length(string A)

返回值:int
功能:返回字符串A的长度
示例:

> select length("Hive") as f1;
+-----+
| f1  |
+-----+
| 4   |
+-----+

19.locate(string substr, string str[, int pos])

返回值:int
功能:返回在位置pos之后,substr在str中首次出现的位置
示例:

> select locate('abc','dfabchelloabc',4) as f1;
+-----+
| f1  |
+-----+
| 11  |
+-----+

> select locate('abc','dfabchelloabc') as f1;
+-----+
| f1  |
+-----+
| 3   |
+-----+

20.lower(string A) lcase(string A)

返回值:string
功能:将字符串A的所有大写字母转换为小写
示例:

> select lower('DFabcHelloabc') as f1;
+----------------+
|       f1       |
+----------------+
| dfabchelloabc  |
+----------------+

> select lcase('DFabcHelloabc') as f1;
+----------------+
|       f1       |
+----------------+
| dfabchelloabc  |
+----------------+

21.lpad(string str, int len, string pad)

返回值:string
功能:从左边开始使用字符串pad对str进行填充至长度为len,如果str本身的长度已经超过len,则会被缩减值len,如果pad为kong则返回NULL。
示例:

> select lpad("abc",12,'*') as f1;
+---------------+
|      f1       |
+---------------+
| *********abc  |
+---------------+

> select lpad("abc",1,'*') as f1;
+-----+
| f1  |
+-----+
| a   |
+-----+

> select lpad("abc",1,'') as f1;
+-------+
|  f1   |
+-------+
| NULL  |
+-------+

22.ltrim(string A)

返回值:string
功能:去掉字符串A左侧的空格
示例:

> select ltrim("   Hive  ") as f1;
+---------+
|   f1    |
+---------+
| Hive    |
+---------+

23.ngrams(array<array<string>>, int N, int K, int pf)

返回值:array<struct<string,double>>
功能:与 sentences()函数一起使用,统计分词后的结果中一起出现频次最高的 TOP-K 结果。详请参考StatisticsAndDataMining
示例:

> select ngrams(sentences('hello word!hellohive,hi hive,hello hive'),2,2) as f1
+----------------------------------------------------+
|                         f1                         |
+----------------------------------------------------+
| [{"ngram":["hello","word"],"estfrequency":1.0},{"ngram":["hellohive","hi"],"estfrequency":1.0}] |
+----------------------------------------------------+

示例中,统计的是两个词在一起出现频次最高的 TOP-2,结果中,hello 与 hive 同时出现 2 次

24.octet_length(string str)

返回值:int
功能:返回以utf-8编码保存字符串str所需八位字节的个数(从Hive2.2.0开始)。octet_length(str) 的值可能会大于 character_length(str)
示例:

> select octet_length('欲速则不达') as f1;
+-----+
| f1  |
+-----+
| 15   |
+-----+

> select character_length('欲速则不达') as f1;
+-----+
| f1  |
+-----+
| 5   |
+-----+

25.parse_url(string urlString, string partToExtract [, string keyToExtract])

返回值:string
功能:对URL进行解析,从URL中返回指定的部分。partToExtract 的有效值为:HOST, PATH, QUERY,REF,PROTOCOL, AUTHORITY, FILE, USERINFO。还可以通过将key作为第三个参数来提取QUERY中特定key的值
示例:

> select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') as f1;
+---------------+
|      f1       |
+---------------+
| facebook.com  |
+---------------+

> select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1') as f1;
+-----+
| f1  |
+-----+
| v1  |
+-----+

26.printf(String format, Obj… args)

返回值:string
功能:按照printf风格格式输出字符串
示例:

> select printf("%08X",12345) as f1;
+-----------+
|    f1     |
+-----------+
| 00003039  |
+-----------+

27.quote(String text)

返回值:string
功能:返回带引号的字符串。(Hive4.0.0新增)
示例:当前不可用

28.regexp_extract(string subject, string pattern, int index)

返回值:string
功能:使用pattern对字符串suject进行抽取,返回匹配到pattern第index个部分的字符串。在使用预定义的字符类时需要注意:将’\s’用作第二个参数将与字母s匹配;’\s’用于匹配空格等。
示例:

> select regexp_extract('Hellostop', 'H(.*?)(\s)', 1) as f1;
+-------+
|  f1   |
+-------+
| ello  |
+-------+

29.regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT)

返回值:string
功能:将INITIAL_STRING中所有匹配到正则表达式PATTERN的子串使用REPLACEMENT替换并返回。在使用预定义的字符类时需要注意:将’\s’用作第二个参数将与字母s匹配;’\s’用于匹配空格等。
示例:

> select regexp_replace("foobar", "oo|ar", "XXX") as f1;
+-----------+
|    f1     |
+-----------+
| fXXXbXXX  |
+-----------+

30.repeat(string str, int n)

返回值:string
功能:重复n次字符串str
示例:

> select repeat("Hive",3) as f1;
+---------------+
|      f1       |
+---------------+
| HiveHiveHive  |
+---------------+

31.replace(string A, string OLD, string NEW)

返回值:string
功能:将字符串A中所有不重叠出现的OLD替换为NEW并返回(从Hive1.3.0和2.1.0开始)。
示例:

> select replace("ababababab", "abab", "Z") as f1;
+-------+
|  f1   |
+-------+
| ZZab  |
+-------+

32.reverse(string A)

返回值:string
功能:反转字符串A
示例:

> select reverse("Hive") as f1;
+-------+
|  f1   |
+-------+
| eviH  |
+-------+

33.rpad(string str, int len, string pad)

返回值:string
功能:与lpad相反。从右边开始使用字符串pad对str进行填充至长度为len,如果str本身的长度已经超过len,则会被缩减值len,如果pad为kong则返回NULL。
示例:

> select rpad("abc",12,'*') as f1;
+---------------+
|      f1       |
+---------------+
| abc*********  |
+---------------+

34.rtrim(string A)

返回值:string
功能:去掉字符串A右侧的空格
示例:

> select rtrim("   Hive  ") as f1;
+----------+
|    f1    |
+----------+
|    Hive  |
+----------+

35.sentences(string str, string lang, string locale)

返回值:array<array>
功能:将自然语言文本标记为单词和句子,其中每个句子在适当的句子边界处断开并以单词数组返回。‘lang’ 和 'locale’是可选参数。
示例:

> select  sentences('Hello there! How are you?') as f1;
+------------------------------------------+
|                    f1                    |
+------------------------------------------+
| [["Hello","there"],["How","are","you"]]  |
+------------------------------------------+

36.space(int n)

返回值:string
功能:返回n个空格的字符串
示例:

> select space(10) as f1;
+-------------+
|     f1      |
+-------------+
|             |
+-------------+

37.split(string str, string pat)

返回值:array
功能:按照正则表达式pat来分割字符串str,并以array类型返回。
示例:

> select split('Hadoop%Hive%Hbase','%') as f1;
+----------------------------+
|             f1             |
+----------------------------+
| ["Hadoop","Hive","Hbase"]  |
+----------------------------+

38.str_to_map(text[, delimiter1, delimiter2])

返回值:map<string,string>
功能:将字符串str按照指定的分隔符转换成key-value对,delimiter1是不同K-V对之间的分隔符,默认为逗号;delimiter2是K-V之间的分隔符,默认为":"
示例:

> select str_to_map("1&hadoop,2&hive,3&hbase",",","&") as f1;
+----------------------------------------+
|                   f1                   |
+----------------------------------------+
| {"1":"hadoop","2":"hive","3":"hbase"}  |
+----------------------------------------+

39. substr(string|binary A, int start) substring(string|binary A, int start)

返回值:string
功能:从start位置开始截取A的字符串并返回
示例:

> select substr("Hello,Hive",3) as f1;
+-----------+
|    f1     |
+-----------+
| llo,Hive  |
+-----------+

40.substr(string|binary A, int start, int len) substring(string|binary A, int start, int len)

返回值:string
功能:从start位置开始截取A的长度为length的字符串并返回
示例:

> select substr("Hello,Hive",3,5) as f1;
+--------+
|   f1   |
+--------+
| llo,H  |
+--------+

41.substring_index(string A, string delim, int count)

返回值:string
功能:截取第count个分隔符delim之前的字符串(从Hive 1.3.0开始),如果count为正,则返回从左开始计数第count个分隔符左侧所有的内容。如果count为负,则返回从右开始计数第count个分隔符右侧所有的内容
示例:

> select substring_index('hive.apache.org', '.', 2) as f1;
+--------------+
|      f1      |
+--------------+
| hive.apache  |
+--------------+

> select substring_index('hive.apache.org', '.', -2) as f1;
+-------------+
|     f1      |
+-------------+
| apache.org  |
+-------------+

42.translate(string|char|varchar input, string|char|varchar from, string|char|varchar to)

返回值:string
功能:将input字符串中的from替换为to并返回
示例:

> select translate("Hello","l","w") as f1;
+--------+
|   f1   |
+--------+
| Hewwo  |
+--------+

43.trim(string A)

返回值:string
功能:去除字符串A两侧的空格
示例:

> select trim("   Hive  ") as f1;
+-------+
|  f1   |
+-------+
| Hive  |
+-------+

44.unbase64(string str)

返回值:binary
功能:将base 64位的字符串转换为binary
示例:

> select base64(unbase64('Hive')) as f1;
+-------+
|  f1   |
+-------+
| Hive  |
+-------+

45.upper(string A) ucase(string A)

返回值:string
功能:将字符串A的所有小写字母转换为大写
示例:

> select upper('DFabcHelloabc') as f1;
+----------------+
|       f1       |
+----------------+
| DFABCHELLOABC  |
+----------------+

> select ucase('DFabcHelloabc') as f1;
+----------------+
|       f1       |
+----------------+
| DFABCHELLOABC  |
+----------------+

46.initcap(string A)

返回值:string
功能:将返回字符串,每个单词的第一个字母为大写,其他字母都为小写。单词之间由空格分隔(从Hive1.1.0开始)
示例:

> select initcap("hehe haha heihei") as f1;
+-------------------+
|        f1         |
+-------------------+
| Hehe Haha Heihei  |
+-------------------+

47.levenshtein(string A, string B)

返回值:int
功能:计算两个字符串之间的 Levenshtein 距离(从Hive1.2.0开始)
示例:

> select levenshtein("Hive","Hadoop") as f1;
+-----+
| f1  |
+-----+
| 5   |
+-----+

补充:莱文斯坦距离,又称Levenshtein距离,是编辑距离的一种。指两个字串之间,由一个转成另一个所需的最少编辑操作次数。允许的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。参考:https://baike.baidu.com/item/%E8%8E%B1%E6%96%87%E6%96%AF%E5%9D%A6%E8%B7%9D%E7%A6%BB

48.soundex(string A)

返回值:string
功能:将字符串A转换成soundex 编码的字符串(从Hive1.2.0开始
示例:

> select soundex("Hive") as f1;
+-------+
|  f1   |
+-------+
| H100  |
+-------+

补充:SOUNDEX ( character_expression ),SOUNDEX 将 alpha 字符串转换成由四个字符组成的代码,以查找相似的词或名称。代码的第一个字符是 character_expression 的第一个字符,代码的第二个字符到第四个字符是数字。将忽略 character_expression 中的元音,除非它们是字符串的第一个字母。参考:https://baike.baidu.com/item/SOUNDEX/3113783?fr=aladdin

参考

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-StringFunctions
https://www.cnblogs.com/MOBIN/p/5618747.html#6
https://www.cnblogs.com/handsome-24/p/11232904.html

发布了57 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/CPP_MAYIBO/article/details/104065701
今日推荐