在hive中的字符串中的某些字符后提取文本

时间:2017-08-17 10:32:28

标签: hadoop hive substring hiveql bigdata

每行有多个ID,我想提取每行中某些文本后面的数字。以下可能是我在id列中的值。

test123; tghy876; 8906; TT-1234
best123; tghy8656; 88706; TT-5678

我希望输出只返回tt之后的数字 - 所以我的输出应该如下所示。

1234
5678

应该使用什么样的hive代码来实现这个目标?

2 个答案:

答案 0 :(得分:3)

使用regexp - 返回'之后的任意位数的第一组; TT - '

select regexp_extract(src_string,'\; TT-(\\d+)',1);

演示:

hive> select regexp_extract('best123\; tghy8656\; 88706\; TT-5678','\; TT-(\\d+)',1);
OK
5678
Time taken: 0.056 seconds, Fetched: 1 row(s)
hive>

答案 1 :(得分:0)

能够使用多次拆分来实现。

分割(分割(ID," TT - ")[1],&#34 ;;")[0]