#分割字符串(split)
select split('要分割的字符串', '分隔符') from test;
截取字符串中的某个值:
hive> select split('abcdef', 'c')[0] from test;
ab
特殊符号作为分隔符时,需做转义 (前缀加上\):
hive> select split('ab_cd_ef', '\_')[0] from test;
ab
hive> select split('ab?cd_ef', '\\?')[0] from test;
ab
#展开字符串(行变列)(只能查看展开的字符串,用侧视图解决)
select explode(split(原字符串,'分隔符')) as 给展开后数据的新字段 from 表名;
#侧视图(lateral view关键字多配合eplode)
select 原表名字段名,改名后字段名1,改名后字段名2,改名后字段名3 from 原表名
lateral view explode(原字段名1) 临时表名1 as 改名后字段名1
lateral view explode(原字段名2) 临时表名2 as 改名后字段名2,改名后字段名3;
#截取字符串(substr)(下标取负数是从末尾算,像python)
select substring(字符串,开始下标,向右取几个) from 表名;
#临时表查询(临时表用完就抛弃)
select 字段1,字段2 from (select 字段1,count(字段) as 字段2 from 表名) 临时表名 where 条件;
#正则表达式查询
select regexp(原字符串, 正则表达式);//能匹配就返回true,否就false
select like(原字符串, 正则表达式);//能匹配就返回true,否就false
#正则表达式截取
select regexp_extract(原字符串,正则表达式, 指定字符);//指定字符:0,返回全部;1,返回第一个;2,返回第二个
试例:
select regexp_extract('honeymoon', 'hon(.*?)(moon)', 2);
moon
#正则表达式替换
select regexp_replace(原字符串,要被替换字符串的部分,用来替换的字