Hive零基础从入门到实战 进阶篇(二) HiveQL:常用字符串函数

目录

 

前言

1. 常用的简单字符串函数表

2. 函数功能演示

2.1 连接字符串 concat

2.2 指定分隔符连接字符串 concat_ws

2.3 截取字符串 substr

2.4 按指定分隔符分割字符串 split

2.5 格式化数字 format_number

2.6 字符串长度 length

2.7 转换小写 lower

2.8 转换大写 upper

2.9 首字母大写其余小写 initcap

2.10 左填充 lpad

2.11 右填充 rpad

2.12 去除首尾空格 trim

2.13 重复字符串 repeat

2.14 倒序排列字符串 reverse


 

前言

本篇博客介绍一些常用的简单字符串函数用法。较为复杂的字符串函数后续博客会分别单独介绍。

 

1. 常用的简单字符串函数表

返回数值类型 函数名\所需参数\参数数据类型 描述

 

string

concat(string|binary A, string|binary B...)

对二进制字节码或字符串按次序进行拼接,例如, concat('foo', 'bar')返回 'foobar'.这个函数可以连接任意数量的字符串。

string

concat_ws(string SEP, string A, string B...)

与concat()类似,但使用指定的分隔符进行连接

string

substr(string|binary A, int start)

substring(string|binary A, int start)

对于字符串A,从start位置开始截取字符串并返回

string

substr(string|binary A, int start, int len) substring(string|binary A, int start, int len)

对于二进制/字符串A,从start位置开始截取长度为length的字符串并返回

array

split(string str, string pat)

按照正则表达式pat来分割字符串str,并将分割后的数组字符串的形式返回

string

format_number(number x, int d)

将数值X转换成"#,###,###.##"格式字符串,并保留d位小数,如果d为0,将进行四舍五入且不保留小数

int

length(string A)

返回字符串A的长度

string

lower(string A) lcase(string A)

将字符串A中的字母转换成小写字母, 例如, lower('fOoBaR') 返回 'foobar'.

string 

upper(string A) ucase(string A)

将字符串A中的字母转换成大写字母,例如,upper('fOoBaR') 返回 'FOOBAR'..
string initcap(string A) 将字符串A转换第一个字母大写,其余字母小写的字符串 (As of Hive 1.1.0.)

string

lpad(string str, int len, string pad)

从左边开始对字符串str使用字符串pad填充,最终len长度为止,如果字符串str本身长度比len大的话,将去掉多余的部分

string

rpad(string str, int len, string pad)

从右边开始对字符串str使用字符串pad填充,最终len长度为止,如果字符串str本身长度比len大的话,将去掉多余的部分

string

ltrim(string A)

将字符串A前边出现的空格去掉

string

rtrim(string A)

将字符串A后边出现的空格去掉

string

trim(string A)

将字符串A前后出现的空格去掉

string

repeat(string A, int n)

返回n个字符串A连接成的字符串

string

reverse(string A)

返回字符串A倒序的字符串

 

2. 函数功能演示

所有的函数所传的参数都可以是字段或者自定义的数据,这里为了演示方便,统一使用自定义数据。

2.1 连接字符串 concat

concat(string|binary A, string|binary B...)

功能:对二进制字节码或字符串按次序进行拼接,这个函数可以连接任意数量的字符串。

hive (app)> select concat('a','b');

ab

hive (app)> select concat('a','b','c');

abc

2.2 指定分隔符连接字符串 concat_ws

concat_ws(string SEP, string A, string B...)

功能:第一个参数SEP是剩余参数间的分隔符,如果分隔符是 NULL,返回值也将为 NULL。这个函数会跳过分隔符参数后的任何 NULL 和空字符串。总之与concat()类似,但使用指定的分隔符SEP,对后面的字符串或字符串数组进行连接。

使用-连接'2019','07','08'
hive (app)> select concat_ws('-','2019','07','08');

2019-07-08

函数会跳过分隔符参数后的任何 NULL 和空字符串
hive (app)> select concat_ws('-','2019',NULL,'08');

2019-08

如果分隔符是 NULL,返回值也将为 NULL
hive (app)> select concat_ws(NULL,'2019','07','08');

NULL

2.3 截取字符串 substr

substr(string|binary A, int start)

substr(string|binary A, int start, int len) 

功能:substr函数有两种用法,一种是只传入要截取的字符串A和开始截取字符串的位置start(即第几个字符),返回从开始到字符串结束所有的字符;

第二种是传入要截取的字符串A、开始截取字符串的位置start、截取字符串的长度,返回从开始指定长度的字符串。

substring与substr用法一致。

截取'2019-07-08 12:00:00'从第六个字符开始到最后左右的字符串
hive (app)> select substr('2019-07-08 12:00:00',6);

07-08 12:00:00

截取'2019-07-08 12:00:00'从第1个字符开始,长度为10个字符的字符串,即只截取日期
hive (app)> select substr('2019-07-08 12:00:00',1,10);

2019-07-08

当开始位置传入-1时,会返回该字符串的最后一个字符
hive (app)> select substr('2019-07-08',-1);

8

2.4 按指定分隔符分割字符串 split

split(string str, string pat)

功能:传入要分割的字符串,和指定分隔符,返回一个由分割后的字符串组成的数组。

按-将2019-07-08分割
hive (app)> select split('2019-07-08','-');

["2019","07","08"]

查看分割后返回数组中的第1个元素,在数组中,第一个元素的下标为0
hive (app)> select split('2019-07-08','-')[0];

2019

查看分割后返回数组中的第2个元素
hive (app)> select split('2019-07-08','-')[1];

07

查看分割后返回数组中的第3个元素
hive (app)> select split('2019-07-08','-')[2];

08

当字符串的分隔符为特殊字符时,需要使用\\进行转义,比如:. 
hive (app)> select split('2019.07.08','.');

["","","","","","","","","","",""]

hive (app)> select split('2019.07.08','\\.');

["2019","07","08"]

2.5 格式化数字 format_number

format_number(number x, int d)

功能:将数值X转换成"#,###,###.##"格式字符串,并保留d位小数,如果d为0,将进行四舍五入且不保留小数。

hive (app)> select format_number(10000000.123,1);

10,000,000.1

2.6 字符串长度 length

length(string A)

功能:返回字符串A的长度,如果A不是string格式,Hive会自动将其转为string格式。

hive (app)> select length('abcd');

4

hive (app)> select length(1234);

4

2.7 转换小写 lower

lower(string A)

功能:将字符串A中的所有字母转换成小写字母。

hive (app)> select lower('ABCdef');

abcdef

2.8 转换大写 upper

upper(string A)

功能:将字符串A中的所有字母转换成大写字母。

hive (app)> select upper('ABCdef');

ABCDEF

2.9 首字母大写其余小写 initcap

initcap(string A)

功能:将字符串A中的所有字母转换成首字母大写其余小写。

hive (app)> select initcap('ABCdef');

Abcdef

2.10 左填充 lpad

lpad(string str, int len, string pad)

功能:从左边开始对字符串str使用字符串pad填充,最终len长度为止,如果字符串str本身长度比len大的话,将去掉多余的部分。

hive (app)> select lpad('abc',6,'1');

111abc

2.11 右填充 rpad

rpad(string str, int len, string pad)

功能:从右边开始对字符串str使用字符串pad填充,最终len长度为止,如果字符串str本身长度比len大的话,将去掉多余的部分。

hive (app)> select rpad('abc',6,'1');

abc111

2.12 去除首尾空格 trim

trim(string A)

功能:将字符串A前后出现的空格都去掉,此函数使用频率极高,表中的数据如果关联不上很有可能是数据前或后有空格!

hive (app)> select trim(' abc');

abc

hive (app)> select trim('abc ');

abc

hive (app)> select trim(' abc ');

abc

2.13 重复字符串 repeat

repeat(string str, int n)

功能:返回n个字符串A连接成的字符串。

hive (app)> select repeat('abc',2);

abcabc

2.14 倒序排列字符串 reverse

reverse(string A)

功能:返回字符串A倒序的字符串。

hive (app)> select reverse('abc');

cba

 


能看到这里的同学,就右上角点个赞吧,3Q~

 

你可能感兴趣的:(Hive零基础从入门到实战 进阶篇(二) HiveQL:常用字符串函数)