Hive数据类型:字符串相关函数

1、length

1
2
3
--返回字符串A的长度
> select length('字符串')
> 3

2、reverse

1
2
3
--返回字符串A的反转结果
> select reverse('abcedfg')
> gfdecba

3、concat

1
2
3
--返回输入字符串连接后的结果,支持任意个输入字符串
> select concat('abc','def','gh')
> abcdefgh

4、concat_ws

1
2
3
--返回输入字符串连接后的结果,第一个参数为各个字符串间的分隔符
> select concat_ws(',','abc','def','gh')
> abc,def,gh

5、substr/substring

1
2
3
4
5
6
7
8
9
10
11
--返回字符串A从start位置到结尾的字符串
> select substr('abcde',3)
> cde
> select substr('abcde',-1)
> e

--返回字符串A从start位置开始,长度为len的字符串
> select substr('abcde',3,2)
> cd
> select substr('abcde',-2,2)
> de

6、upper/ucase

1
2
3
--返回字符串A的大写格式
> select upper('abSEd')
> ABSED

7、lower/lcase

1
2
3
--返回字符串A的小写格式
> select lower('abSEd')
> absed

8、trim

1
2
3
--去除字符串两边的空格
> select trim(' abc ')
> abc

9、ltrim

1
2
3
--去除字符串左边的空格
> select ltrim(' abc ')
> abc

10、rtrim

1
2
3
--去除字符串右边的空格
> select rtrim(' abc ')
> abc

11、regexp_extract

1
2
3
4
5
6
7
8
9
10
11
12
regexp_extract(str,regexp,index)
--str是被解析的字符串或字段名
--regexp是正则表达式
--index是返回结果取表达式的哪一部分,默认值为1
--0表示把整个正则表达式对应的结果全部返回
--1表示返回正则表达式中第一个() 对应的结果,以此类推
> select regexp_extract('foothebar','foo(.*?)(bar)',1)
> the
> select regexp_extract('foothebar','foo(.*?)(bar)',2)
> bar
> select regexp_extract('foothebar','foo(.*?)(bar)',0)
> foothebar

12、regexp_replace

1
2
3
4
5
regexp_replace(string A, string B, string C)
--将字符串A中的符合正则表达式B的部分替换为C
--将'oo'或'ar'去掉
> select regexp_replace('foobar', 'oo|ar', '')
> fb

13、parse_url

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
parse_url(url,partToExtract[,key])
--解析URL字符串,partToExtract的选项包含[HOST,PATH,QUERY,REF,PROTOCOL,FILE,AUTHORITY,USERINFO],必须为大写!
> select parse_url('http://facebook.com/path/p1.php?query=1','HOST')
> facebook.com
> select parse_url('http://facebook.com/path/p1.php?query=1','PATH')
> /path/p1.php
> select parse_url('http://facebook.com/path/p1.php?query=1','QUERY')
> query=1

--可以指定key来返回特定参数
> select parse_url('http://facebook.com/path/p1.php?query=1','QUERY','query')
> 1
> select parse_url('http://facebook.com/path/p1.php?query=1#Ref','REF')
> Ref
> select parse_url('http://facebook.com/path/p1.php?query=1#Ref','PROTOCOL')
> http
> select parse_url('http://facebook.com/path/p1.php?query=1#Ref','FILE')
> /path/p1.php?query=1
> select parse_url('http://facebook.com/path/p1.php?query=1','AUTHORITY')
> facebook.com

14、get_json_object

1
2
3
4
get_json_object(string json_string,string path)
--解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NULL。
> select get_json_object('{"name":"wmm","sex":"male","age":26}','$.sex')
> male

15、json_tuple

1
2
3
--解析json字符串,返回多个对象。不需要添加'$.'
> select json_tuple('{"name":"wmm","sex":"male","age":26}','sex','age')
> male26

16、space

1
2
3
4
--返回指定长度的空字符串
> select space(10)
> select length(space(10))
> 10

17、repeat

1
2
3
--返回重复n次后的str字符串
> select repeat('abc',5)
> abcabcabcabcabc

18、ascii

1
2
3
--返回字符串str第一个字符的ascii码
> select ascii('abcde')
> 97

19、lpad

1
2
3
4
lpad(string str,int len,string pad)
--将str进行用pad进行左补足到len位
> select lpad('abc',10,'td')
> tdtdtdtabc

20、rpad

1
2
3
4
rpad(stringstr,intlen,stringpad)
--将str进行用pad进行右补足到len位
> select rpad('abc',10,'td')
> abctdtdtdt

21、split

1
2
3
4
5
6
7
8
split(string str,string pat)
--按照pat字符串分割str,会返回分割后的字符串数组
> select split('abtcdtef','t')
> ["ab","cd","ef"]

--取分割后的字符串数组,索引从0开始
> select split('abtcdtef','t')[2]
> ef

22、find_in_set

1
2
3
4
5
6
find_in_set(string str,string strList)
--返回str在strlist第一次出现的位置,strlist必须是用逗号分割的字符串。如果没有找该str字符,则返回0
> select find_in_set('ab','ef,ab,de')
> 2
> select find_in_set('at','ef,ab,de')
> 0