以下的字符串都可以用字段名表示,顺序索引,从1开始,逆序索引,从-1开始
语法: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);
语法:reverse(string A)
返回值:string(返回字符串A的反转结果)
hive> select reverse('abcde') from table_name;
return : edcba
语法:concat(string A, string B,...)
返回值:string 返回输入字符串连接后的结果,支持任意个输入字符串
hive> select concat('abc', 'def', 'gh') from table_name
return : abcdefgh
语法:concat_ws(string sep, string A, string B,...)
返回值:string 返回字符串连接后的结果,sep表示各个字符串间的分隔符
hive> select concat_ws(',', 'abc', 'def', 'gh') from table_name;
return : abc,def,gh
语法: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
语法: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
语法: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
语法: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
语法:trim(string A)
返回值:string 去除字符串两边的空格
hive> select trim(' abc ') from table_name;
return : abc
hive> select ltrim(' abc ') from table_name;
return : abc
hive> select rtrim(' abc ') from table_name;
return : abc
语法: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
语法: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
语法: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
语法: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
语法: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
语法:ascii(string str)
返回值:int 返回字符串str第一个字符的ascii码对应的数值
hive> select ascii('abc') from table_name;
return : 97
语法:lpad(string str, int len, string pad)
返回值:string 将str进行用pad做左补足到len位
hive> select lpad('abc', 10, 'td') from table_name;
return : tdtdtdtabc
语法:rpad(string str, int len, string pad)
返回值:string 将str进行用pad做右补足到len位
hive> select rpad('abc', 10, 'td') from table_name;
return : abctdtdtdt
语法:split(string str, string pat) # 如果能限制一下分割的次数就完美了。。。
返回值:array 按照pat字符串分割str,返回分割后的字符串数组
hive> select split('abtcdtef', 't') from table_name;
return : ['ab', 'cd', 'ef']
语法: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