impala 字符串按某个分隔符切割 正则替换 去除空格

征信中的数字解读分说明项,格式是形如[信用历史较短, 近期硬查询次数较多],也有[]的情况
现在需要将说明项中第一项和第二项都提取出来,字段名为pc010d01。
具体操作步骤如下:
1、按逗号切割
split_part(pc010d01,',',1)按逗号切割字符串,取第一部分,得到形如 [信用历史较短
注:split_part('[]',',',1)得到的是[],即原字符串
2、用正则匹配替换掉]和[
regexp_replace(split_part(pc010d01,',',1),'\\[|\\]',''),]和[在正则表达式中是需要转义的,转义是\[和\],但是在impala中这样转义会报错,我尝试了下用\\]和\\[才work
3、去掉首尾的空格
trim(regexp_replace(split_part(pc010d01,',',1),'\\[|\\]',''))
trim()函数用于去掉首尾的空格
最后的完整SQL,形如:
SELECT trim(regexp_replace(split_part(pc010d01,',',1),'\\[|\\]','')) AS field1
FROM tpqr_psm_pc01
WHERE data_create_date = to_date(now())
UNION ALL
SELECT trim(regexp_replace(split_part(pc010d01,',',2),'\\[|\\]','')) AS field1
FROM tpqr_psm_pc01
WHERE data_create_date = to_date(now())

关于impala相关字符串处理函数,可在这里面去捞

留言

熱門文章