以下的字符串都可以用字段名表示,顺序索引,从1开始,逆序索引,从-1开始
1.字符串长度:length
语法:length(string A)
返回值:int(字符串A的长度)
hive> select length('abcde') from table_name;
return:5
select length(gid) from db_name.table_name group by length(gid);
2.字符串反转函数:reverse
语法:reverse(string A)
返回值:string(返回字符串A的反转结果)
hive> select reverse('abcde') from table_name;
return : edcba
3.字符串连接函数:concat
语法:concat(string A, string B,...)
返回值:string 返回输入字符串连接后的结果,支持任意个输入字符串
hive> select concat('abc', 'def', 'gh') from table_name
return : abcdefgh
4.带分隔符字符串连接函数:concat_ws
语法:concat_ws(string sep, string A, string B,...)
返回值:string 返回字符串连接后的结果,sep表示各个字符串间的分隔符
hive> select concat_ws(',', 'abc', 'def', 'gh') from table_name;
return : abc,def,gh
5.字符串截取函数:substr,substring
语法:substr(string A, int start) substring(string A, int start)
返回值:string 返回字符串A从start位置到结尾的字符串
hive> select substr('abcdef', 3) from table_name;
return : cdef
hive> select substring('abcdef', 3) from table_name;
return : cdef
hive> select substr('abcdef', -1) from table_name;
return : f
6.字符串截取函数:substr, substring
语法:substr(string A, int start, int len), substring(string A, int start, int len)
返回值:string 返回字符串A从start位置到结尾的字符串
hive> select substr('abcdef', 3, 2) from table_name;
return : cd
hive> select substring('abcdef', 3, 2) from table_name;
return : cd
hive> select substr('abcdef', -3, 2) from table_name;
return : de
7. 字符串转大写函数:upper, ucase
语法:upper(string A), ucase(string A)
返回值:string 返回字符串A的大写格式
hive> select upper('abCDe') from table_name;
return : ABCDE
hive> select ucase('abCDe') from table_name;
return : ABCDE
8. 字符串转小写函数:lower, lcase
语法:lower(string A), lcase(string A)
返回值:string 返回字符串A的小写格式
hive> select lower('abCDe') from table_name;
return : abcde
hive> select lcase('abCDe') from table_name;
return : abcde
9.去字符串两边空格:trim
语法:trim(string A)
返回值:string 去除字符串两边的空格
hive> select trim(' abc ') from table_name;
return : abc
10.去除字符串左边空格:ltrim
hive> select ltrim(' abc ') from table_name;
return : abc
11.去除字符串右边空格:rtrim
hive> select rtrim(' abc ') from table_name;
return : abc
12.正则表达式替换函数:regexp_replace
语法:regexp_replace(string A, string B, string C)
返回值:string 将字符串A中符合java正则表达式B的部分替换成C。
hive> select regexp_replace('foobar', 'oo|ar', '') from table_name;
return : fb
13.正则表达式解析函数:regexp_extract
语法:regexp_extract(string subject, string pattern, int index)
返回值:string, 将字符串subject 按照正则表达式的规则拆分,返回index指定的字符串
hive> select regexp_extract('foothebar', 'foo(.*?)(bar)', 1) from lxw_dual;
return : the
hive> select regexp_extract('foothebar', 'foo(.*?)(bar)', 2) from lxw_dual;
return : bar
hive> select regexp_extract('foothebar', 'foo(.*?)(bar)', 0) from lxw_dual;
return : foothebar
14.URL解析函数:parse_url
语法:parse_url(string urlstring, string partToExtract [, string keyToExtract])
返回值:string 返回URL中指定的部分。partToExtract 的有效值为:
HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.
hive> select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') from lxw_dual;
return : facebook.com
hive> select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1') from lxw_dual;
return : v1
15.json解析函数:get_json_object
语法:get_json_object(string json_string, string path)
返回值:string 解析json字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NULL.
hive> select get_json_object('{"store":{"fruit":\[{"weight":8, "type":"apply"}, {"weight":9, "type":"pear"}],
"bicycle":{"price":19.95, "color":"red"}},
"email":"amy@only_for_json_udf_test.net",
"owner":"amy"}', '$.woner') from table_name;
return : amy
16.空格字符串函数:space
语法:space(int n)
返回值:string 返回长度为n的空字符串
hive> select space(10) from table_name;
hive> select length(space(10)) from table_name;
return : 10
17.重复字符串函数:repeat
语法:repeat(string str, int n)
返回值:string 返回重复n次后的str字符串
hive> select repeat('a', 3) from table_name;
return : aaa
18.首字符的ascii值:ascii
语法:ascii(string str)
返回值:int 返回字符串str第一个字符的ascii码对应的数值
hive> select ascii('abc') from table_name;
return : 97
19.左补足函数:lpad(常用来补足长度不足的字符串,然后进行截取)
语法:lpad(string str, int len, string pad)
返回值:string 将str进行用pad做左补足到len位
hive> select lpad('abc', 10, 'td') from table_name;
return : tdtdtdtabc
20.右补足函数:rpad
语法:rpad(string str, int len, string pad)
返回值:string 将str进行用pad做右补足到len位
hive> select rpad('abc', 10, 'td') from table_name;
return : abctdtdtdt
21.分割字符串函数:split
语法:split(string str, string pat) # 如果能限制一下分割的次数就完美了。。。
返回值:array 按照pat字符串分割str,返回分割后的字符串数组
hive> select split('abtcdtef', 't') from table_name;
return : ['ab', 'cd', 'ef']
22.集合查找函数:find_in_set
语法:find_in_set(string str, string strList)
返回值:int 返回str在strList第一次出现的位置,strList是用逗号分割的字符串。如果没有找到该str字符,则返回0
hive> select find_in_set('ab', 'ef,ab,de') from table_name;
return : 2
hive> select find_in_set('at', 'ef,ab,de') from table_name;
return : 0