语法: length( string A)
返回值: int
说明:返回字符串A的长度
举例:
hive> select length( ‘abcedfg’) from test;
语法: reverse( string A)
返回值: string
说明:返回字符串A的反转结果
举例:
hive> select reverse( ‘abcedfg’) from test;
gfdecba
语法: concat( string A, string B…)
返回值: string
说明:返回输入字符串连接后的结果,支持任意个输入字符串
举例:
hive> select concat( ‘abc’, 'def’,' gh’) from test;
abcdefgh
语法: concat_ws( string SEP, string A, string B…)
返回值: string
说明:返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符
举例:
hive> select concat_ws( ‘, ’, 'abc’,' def’, 'gh’) from test;
abc, def, gh
语法: substr( string A, int start ) , substring( string A, int start )
返回值: string
说明:返回字符串A从start 位置到结尾的字符串
举例:
hive> select substr( ‘abcde’, 3 ) from test;
cde
hive> select substring( ‘abcde’, 3 ) from test;
cde
hive> select substr( ‘abcde’, - 1 ) from test; (和ORACLE相同)
e
select substr( user_id, 0 , 2 ) from test; 截取user_id 字段的前两位
语法: substr( string A, int start ) , substring( string A, int start )
返回值: string
说明:返回字符串A从start 位置到结尾的字符串
举例:
hive> select substr( ‘abcde’, 3 ) from test;
cde
hive> select substring( ‘abcde’, 3 ) from test;
cde
hive> select substr( ‘abcde’, - 1 ) from test; (和ORACLE相同)
e
select substr( user_id, 0 , 2 ) from test; 截取user_id 字段的前两位
语法: substr( string A, int start , int len) , substring( string A, int start , int len)
返回值: string
说明:返回字符串A从start 位置开始,长度为len的字符串
举例:
hive> select substr( ‘abcde’, 3 , 2 ) from test;
cd
hive> select substring( ‘abcde’, 3 , 2 ) from test;
cd
hive> select substring( ‘abcde’, - 2 , 2 ) from test;
de
语法: upper( string A) ucase ( string A)
返回值: string
说明:返回字符串A的大写格式
举例:
hive> select upper( ‘abSEd’) from test;
ABSED
hive> select ucase ( ‘abSEd’) from test;
ABSED
语法: lower( string A) lcase ( string A)
返回值: string
说明:返回字符串A的小写格式
举例:
hive> select lower( ‘abSEd’) from test;
absed
hive> select lcase ( ‘abSEd’) from test;
absed
语法: trim( string A)
返回值: string
说明:去除字符串两边的空格
举例:
hive> select trim( ‘ abc ‘) from test;
abc
语法: ltrim( string A)
返回值: string
说明:去除字符串左边的空格
举例:
hive> select ltrim( ‘ abc ‘) from test;
abc
语法: rtrim( string A)
返回值: string
说明:去除字符串右边的空格
举例:
hive> select rtrim( ‘ abc ‘) from test;
abc
其中的index ,是按照正则字符串()的位置
语法: regexp_extract( string subject, string pattern, int index )
返回值: string
说明:将字符串subject按照pattern正则表达式的规则拆分,返回index 指定的字符。注意,在有些情况下要使用转义字符
举例:
hive> select regexp_extract( ‘foothebar’, ‘foo( . * ?) ( bar) ’, 1 ) from test;
the
hive> select regexp_extract( ‘foothebar’, ‘foo( . * ?) ( bar) ’, 2 ) from test;
bar
hive> select regexp_extract( ‘foothebar’, ‘foo( . * ?) ( bar) ’, 0 ) from test;
foothebar
parse_url( url, partToExtract[ , key ] ) - extracts a part from a URL
解析URL字符串,partToExtract的选项包含[ HOST, PATH, QUERY, REF, PROTOCOL, FILE , AUTHORITY, USERINFO] 。
举例:
* parse_url( 'http://facebook.com/path/p1.php?query=1' , 'HOST' ) 返回'facebook.com'
* parse_url( 'http://facebook.com/path/p1.php?query=1' , 'PATH' ) 返回'/path/p1.php'
* parse_url( 'http://facebook.com/path/p1.php?query=1' , 'QUERY' ) 返回'query=1' ,
可以指定key 来返回特定参数,例如
* parse_url( 'http://facebook.com/path/p1.php?query=1' , 'QUERY' , 'query' ) 返回'1' ,
* parse_url( 'http://facebook.com/path/p1.php?query=1#Ref' , 'REF' ) 返回'Ref'
* parse_url( 'http://facebook.com/path/p1.php?query=1#Ref' , 'PROTOCOL' ) 返回'http'
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" :"apple" }, {"weight" :9 , "type" :"pear" }] ,
> “bicycle”:{“price”:19.95 , ”color”:”red”}
> },
> “email”:”amy@only_for_json_udf_test.net ”,
> “owner”:”amy”
> }
> ‘, ’$. owner’) from test;
amy
使用实例:
select get_json_object( '{"store":{"fruit":\["aa","bb","cc"]},"owner":"amy"}' , '$.store.fruit[0]' ) from test_msg limit 1 ;
语法: space( int n)
返回值: string
说明:返回长度为n的字符串
举例:
hive> select space( 10 ) from test;
hive> select length( space( 10 ) ) from test;
10
语法: repeat ( string str, int n)
返回值: string
说明:返回重复n次后的str字符串
举例:
hive> select repeat ( ‘abc’, 5 ) from test;
abcabcabcabcabc
语法: ascii( string str)
返回值: int
说明:返回字符串str第一个字符的ascii码
举例:
hive> select ascii( ‘abcde’) from test;
97
语法: lpad( string str, int len, string pad)
返回值: string
说明:将str进行用pad进行左补足到len位
举例:
hive> select lpad( ‘abc’, 10 , ’td’) from test;
tdtdtdtabc
与GP,ORACLE不同,pad 不能默认
语法: rpad( string str, int len, string pad)
返回值: string
说明:将str进行用pad进行右补足到len位
举例:
hive> select rpad( ‘abc’, 10 , ’td’) from test;
abctdtdtdt
语法: split( string str, string pat)
返回值: array
说明: 按照pat字符串分割str,会返回分割后的字符串数组
举例:
hive> select split( ‘abtcdtef’, 't’) from test;
[ "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 test;
2
hive> select find_in_set( 'at' , 'ef,ab,de' ) from test;
0