impala 字符串操作函数

6.6、字符串操作函数

这里写目录标题

      • 6.6、字符串操作函数
        • 字符串拼接
        • 查找字符串第一次出现位置
        • 字符串大小写转换
        • 字符串截取

-- 去除字符串之前和之后的任意个数的空格
btrim(string a)
trim(string a)
-- 去除第一个字符串之前和之后的任何包含在第二个字符串中出现任意次数的字符
btrim(string a,string chars_to_trim)
-- 返回参数字符串,并从左侧删除任何前导空格
ltrim(string a)
-- 返回参数字符串,并从右侧删除任何后置空格
rtrim(string a)


-- 返回字符串的长度,两个函数功能相同
char_length(string a)
character_length(string a)
-- 返回参数字符串的字符长度
length(string a)

字符串拼接

  • 字符串拼接
-- 拼接多个字符串
concat(string a,string b…)
-- 拼接多个字符串,由指定分隔符分割
concat_ws(string sep,string a,string b…)
select concat_ws('-','hello','world') as concat_ws;

查找字符串第一次出现位置

  • 查找字符串第一次出现位置
-- 查找某个字符串在一个以逗号为分隔符的列表中第一次出现的位置(以1为起点)
find_in_set(string str,string strList)
-- 如果查询不到或查询字符串中出现’,’(逗号),返回则为0
select find_in_set('c','a,b,c,d,e,f,g') as find_in_set; -- 返回结果 3

-- 返回较长字符串中第一次出现子字符串的位置(从1开始)
instr(string str,string substr)
select instr('abcdefg','bcd') as instr; -- 结果为 2

-- 返回字符串中第一次出现子字符串的位置(从1开始),可指定位置
locate(string substr,string str,[int pos])
-- 返回长字符串中'bc'从第三位之后第一次出现的位置
> select locate('bc','abcdefgabc',3) as locate; -- 结果为9

字符串大小写转换

  • 字符串大小写
-- 将字符串首字符大写并返回
initcap(string str)

-- 全部转为小写字符的字符串
lower(string a)
lcase(string a)

-- 全部转为大写字符的字符串
upper(string a)
ucase(string a)

字符串截取

  • 截取字符串
-- 返回通过正则表达式提取的字符串,
-- impala使用\字符进行转义,所以\d需要\\d,
regexp_extract(string subject,string pattern,int index)
+------------------------------------------------------+
| regexp_extract('abcdef123ghi456jkl', '.*?(\\d+)', 0) |
+------------------------------------------------------+
| abcdef123ghi456                                      |
+------------------------------------------------------+

-- 返回true或者false,表示字符串是否包含正则表达式的值
regexp_like(string source,string pattern,[string options])
options参数:
- c: 区分大小写匹配(默认)
- i:不区分大小写
- m:多行匹配
- n:换行符匹配
+------------------------------+
| regexp_like('foo', 'f', 'i') |
+------------------------------+
| true                         |
+------------------------------+

-- 替换字符串与正则表达式匹配项为新字符串并返回
regexp_replace(string initial,string pattern,string replacement)
+------------------------------------------+
| regexp_replace('aaabbbaaa', 'b+', 'xyz') |
+------------------------------------------+
| aaaxyzaaa                                |
+------------------------------------------+

-- 以delimiter字符串作为拆分项,取第n个字符串返回
split_part(string source,string delimiter,bigint n)
+-----------------------------+
| split_part('x,y,z', ',', 1) |
+-----------------------------+
| x                           |
+-----------------------------+

-- 返回指定重复次数的字符串
repeat(string str,int n)
-- 返回反转字符串
reverse(string a)
-- 返回指定数量的空格的连接字符串
space(int n)

-- 截取字符串,返回左边的n个字符
strleft(string a,int num_chars)
-- 截取字符串,返回右边的n个字符
strright(string a,int num_chars)
-- 返回从指定点开始的字符串部分,可选地指定最大长度
substr(string a,int start,[int len])
substring(string a,int start,[int len])

-- 将字符串中的字符替换为其他字符(单个,多个字符需一一对应)
translate(string input,string from,string to)
-- 将'world'替换为'cauchy',只能匹配到想相同长度,即'cauch',且拆分为w->c,o->a,r->u,l->c,d->h
[master:21000] > select translate('hello world','world','cauchy') as translate;
+-------------+
| translate   |
+-------------+
| hecca cauch |
+-------------+

你可能感兴趣的:(大数据,impala,sql,database,大数据)