Hive函数总结(一):字符串函数

本文介绍了Hive中的多种字符串函数,包括字符串长度、反转、连接、截取、大小写转换、去空格等函数,还涉及正则表达式处理、URL解析、JSON解析等函数,并给出了各函数的语法、返回值说明及使用示例。

 

1、length 字符串长度

    length(string a)

    

2、reverse    反转字符串

    reverse('string')

    

3、concat    字符串连接函数

    concat('a','b')

    输出 ab

    

4、concat_ws    指定分隔符连接字符串

    concat_ws('-','a','b')

    输出 a-b

    

5、substr,substring    字符串截取函数

    语法: substr(string A, int start),substring(string A, int start)

    返回值: string

    说明:返回字符串A从start位置到结尾的字符串

    

    substr('substr',3)

    返回第三个字符到结尾的字符串

    输出    str

    

    substr('substr',-2)

    返回倒序前两个字符,

    输出    tr

    

6、substr,substring    字符串截取函数

 

    语法: substr(string A, int start, int len),substring(string A, intstart, int len)

    返回值: string

    说明:返回字符串A从start位置开始,长度为len的字符串

 

    substr('substr',2,3)

    返回从第二个字符开始的三个字符

    输出    bst

    

    substr('substr',-2,2)

    返回倒序的两个字符

    输出     tr

    

7、字符串转大写函数:upper,ucase

    语法: upper(string A) ucase(string A)

    返回值: string

    说明:返回字符串A的大写格式

    

8、字符串转小写函数:lower,lcase

 

    语法: lower(string A) lcase(string A)

    返回值: string

    说明:返回字符串A的小写格式

 

9、去两端空格函数:trim

    语法: trim(string A)

    返回值: string

    说明:去除字符串两边的空格

 

10、左边去空格函数:ltrim

    语法: ltrim(string A)

    返回值: string

    说明:去除字符串左边的空格

 

11、右边去空格函数:rtrim

    语法: rtrim(string A)

    返回值: string

    说明:去除字符串右边的空格

 

12、正则表达式替换函数:regexp_replace

 

    语法: regexp_replace(string A, string B, string C)

    返回值: string

    说明:将字符串A中的符合java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符,类似oracle中的regexp_replace函数。

 

    select regexp_replace('Lubstr','st|r','sss') from

    将st或者r 替换为 sss

    输出    Lubssssss

    

13、正则表达式解析函数:regexp_extract

    语法: regexp_extract(string subject, string pattern, int index)

    返回值: string

    说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。

 

14、URL解析函数:parse-url

    语法:parse_url(string urlString,string partToExtract[,stringkeyToExtract])

    返回值:string

    说明:返回URL中指定的部分。partToExtract的有效值为:HOST,PATH,QUERY,REF,PROTOCOL,AUTHORITY,FILE, USERINFO。

    

    举例:

    hive> select parse_url('http://sensingtech.com?company=sensing', 'HOST') from dual;

            OK

        sensingtech.com

    hive> select parse_url('http://sensingtech.com?company=sensing', 'QUERY','company') from dual;

        sensing

 

15、json解析函数:get_json_object

    语法:get_json_object(string json,string path)

    返回值:string

    说明:解析json的字符串json_string,返回path指定的内容,如果输入的json字符串无效,那么返回null。

    

    举例:

    hive> select get_json_object('{"name":"小强","age":16,"msg":["a","b"],"regex": "^http://.*"}','$.name') from dual;

        OK

        小强

 

16、空格字符串函数:space

    语法:space(int n )

    返回值:string

    说明:返回长度n的字符串

    举例:

    hive> select space(10) from dual;

            OK

                      

            Time taken: 0.087 seconds, Fetched: 1 row(s)

    hive> select length(space(10)) from dual;

            OK

            10

            Time taken: 0.099 seconds, Fetched: 1 row(s)

 

17、重复字符串函数:repeat

    语法:repeat(string str,int n)

    返回值:string

    说明:返回重复n 次后的字符串

    举例:

    hive> select repeat('str',2) from dual;

        OK

        strstr

        Time taken: 0.181 seconds, Fetched: 1 row(s)

        

18、首字符ascii函数:ascii

    语法:ascii(string str)

    返回值:int

    说明:返回字符串str的第一个字符的ASCII码

    举例:

    hive> select ascii('str') from dual;

        OK

        115

        Time taken: 0.097 seconds, Fetched: 1 row(s)

 

19、左补足函数:lpad

    语法:lpad(string str ,int len,string  pad)

    返回值:string

    说明:将str用pad进行左补足到len位

    举例:

    若补足位数不超过原字符串长度,则会变成截取效果

    hive> select lpad('sensing',5,'super') from dual;

        OK

        sensi

        Time taken: 0.081 seconds, Fetched: 1 row(s)

    从左侧用super 补足15位

    hive> select lpad('sensing',15,'super') from dual;

        OK

        supersupsensing

        Time taken: 0.101 seconds, Fetched: 1 row(s)

        

20、右补足函数:rpad

    语法:rpad(string str,int len ,string pad)

    返回值:string

    说明:将str用pad进行右补足到len位

    举例:

    hive> select rpad('sensing',15,'super') from dual;

        OK

        sensingsupersup

        Time taken: 0.099 seconds, Fetched: 1 row(s)

        

21、分隔字符串函数:split

    语法:split(string str,string pat)

    返回值:array

    说明:按照pat字符串分隔str,会返回分割后的字符串数组

    举例:

    hive> select split('t-dws-table','-') from dual;

        OK

        ["t","dws","table"]

        Time taken: 0.155 seconds, Fetched: 1 row(s)

    使用[n]来获取第n+1个元素

    hive> select split('t-dws-table','-')[2] from dual;

        OK

        table

        Time taken: 0.103 seconds, Fetched: 1 row(s)

        

22、集合查找函数:find_in_set

    语法:find_in_set(string str,string strList)

    返回值:int

    说明:返回str在strList第一次出现的位置,strList是用逗号分隔的字符串。若没有找到该str字符串,则返回0

    逗号分隔,返回所在第几个位置,类型用逗号分隔的数组返回索引

    举例:

    hive> select find_in_set('sen','com,sen,sing') from dual;

        OK

        2

        Time taken: 0.115 seconds, Fetched: 1 row(s)

    完全匹配且只有一个元素,会返回1。不会报错。

    hive> select find_in_set('sen','sen') from dual;

        OK

        1

        Time taken: 0.109 seconds, Fetched: 1 row(s)

    hive> select find_in_set('sen','sensing') from dual;

        OK

        0

        Time taken: 0.101 seconds, Fetched: 1 row(s)

        

23、格式化数字小数点:format_number

    语法:format_number(string num,n)

    说明:num四舍五入保留n位小数

    举例:

    hive> select format_number(123.456,2) from dual;

        OK

        123.46

 

24、返回子字符位置函数:instr(string str,string substr)

    语法:instr(string str,string substr)

    说明:返回substr 在字符串str中第一次出现的位置,若没找到,返回0

    hive> select instr('sensing','sing') from dual;

        OK

        4

        Time taken: 0.102 seconds, Fetched: 1 row(s)

    hive> select instr('sensing','sn') from dual;

        OK

        0

        

25、返回子字符串下标函数:locate(string substr,string str[,int pos])

    语法:locate(string substr,string str[,int pos])

    说明:返回子字符串在字符串指定位置后第一次出现的下标,不输入位置,默认第一次

    举例:

    hive> select locate('sing','sensingsensing',5) from dual;

        OK

        11

        Time taken: 0.112 seconds, Fetched: 1 row(s)

    hive> select locate('sing','sensingsenseing') from dual;

        OK

        4

        Time taken: 0.063 seconds, Fetched: 1 row(s)

 

26、将字符串拆分为map:str_to_map

    语法:str_to_map(string str,string delimiter1,string delimiter2)

    说明:delimiter1把字符串拆分,delimiter2把拆分的字符串,解析为k-v对

    举例:

    hive> select str_to_map('a=1,b=2',',','=') from dual;

        OK

        {"a":"1","b":"2"}

        Time taken: 0.102 seconds, Fetched: 1 row(s)

        

27、替换字符串函数:translate

    语法:translate(string input,string from ,string to)

    说明:把字符串input中的所有 from 替换为 to。

    举例:

    hive> select translate('sensing','s','S') from dual;

        OK

        SenSing

        Time taken: 0.159 seconds, Fetched: 1 row(s)

    也可以用来处理字符中的空格

    hive> select translate('s en si ng',' ','') from dual;

        OK

        sensing

        Time taken: 0.107 seconds, Fetched: 1 row(s)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值