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
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)