目录
- hive outline
- hive 字符串函数
- 字符串长度函数:length
- 字符串反转函数:reverse
- 字符串连接函数:concat
- 带分隔符字符串连接函数:concat_ws
- 字符串截取函数:substr,substring
- 字符串转大写函数:upper,ucase
- 字符串转小写函数:lower,lcase
- 去空格函数:trim
- 左边去空格函数:ltrim
- 右边去空格函数:rtrim
- 正则表达式替换函数:regexp_replace
- 正则表达式函数:regexp
- 正则表达式解析函数:regexp_extract
- 空格字符串函数:space
- 重复字符串函数:repeat
- 首字符ascii函数:ascii
- 左补足函数:lpad
- 右补足函数:rpad
- 分割字符串函数: split
- 集合查找函数: find_in_set
hive outline
hive 字符串函数
语法:
length(str | binary)
select length('ab');
-- 输出 2
select length('老王');
-- 输出 2
select reverse('abc');
-- 输出 cba
语法:concat(str1, str2, … strN)
select concat('hello', '-','word');
-- 输出 hello-word
select concat('hello', '-','word',':', 'hive');
-- 输出 hello-word:hive
语法:concat_ws(separator, [string | array(string)]+)
当多个字符串间连接字符相同时,
可以改用函数:concat_ws
select concat_ws('-', 'a', 'b', 'c')
-- 输出 a-b-c
语法:
substr(str, pos[, len]) 或者 substring(str, pos[, len])
select substr('abcdef', -2); -- 如果为负数则倒着数2个,即ef
-- 从索引位置为3处,开始截取
select substr('abcdef', 3); -- 输出 cdef
-- 从索引位置为3处,截取2个字符
select substr('abcdef', 3, 2); -- 输出 cd
select upper("angelababy");
select ucase("angelababy");
select lower("ANGELABABY");
select lcase("ANGELABABY");
语法:
trim 去除左右两边的空格
select trim(" ab cd ");
-- 输出 ab cd
语法:
regexp_replace(str, regexp, rep)
select regexp_replace('100-200', '(\\d+)', 'num');
-- 输出 num-num
校检身份证位数是否为18/15位
select '123456789123456789' regexp 'd{15}|d{18}'
-- 输出 true
select '12345678912345678' regexp 'd{15}|d{18}'
-- 输出 false
语法:
regexp_extract(str, regexp[, idx]) 提取正则匹配到的指定组内容
select regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
-- 输出 200
语法:
space(n) 返回指定个数空格
select space(4);
语法:
repeat(str, n) 重复str字符串n次
select repeat("angela",2);
语法:
ascii
select ascii("angela"); --语法:a对应ASCII 97
语法:
分割字符串函数: split(str, regex)
select split('apache hive', ' ');
-- 输出 ["apache","hive"]
语法:
find_in_set(str,str_arrasqly)
find_in_set 函数用于查找一个字符串是否存在于逗号分隔的字符串列表中
select find_in_set('apple', 'apple,orange,banana,mango');
该查询将返回1,因为 ‘apple’ 在给定的逗号分隔字符串列表中的第一个位置上
select find_in_set('pear', 'apple,orange,banana,mango');
这个查询将返回0,因为’pear’不在给定的逗号分隔字符串列表中