Hive查询在匹配模式后提取部分字段

时间:2016-10-22 14:18:34

标签: hive

需要使用regexp_extract提取Hive查询来提取字段的一部分(类型字符串)。其中的值是冒号分隔

Field1 ( String)
----------------
AAA:123,BBB:345,CCC:456,DDD:789,EEE:434

AAA:343,BBB:222,DDD:989,EEE:344

BBB:233,CCC:211,DDD:888,EEE:912

Need to extract the value of BBB

Field1
-------
345

222

233

尝试regexp_extract并无法获得所需的输出。

2 个答案:

答案 0 :(得分:1)

假设您的表名为 temp ,列名为 s ,其中包含一个字符串。您可以使用此功能获取您的值:select regexp_extract(s, 'BBB:(.*?)(,)', 1) from temp;

答案 1 :(得分:0)

使用此正则表达式:

select regexp_extract('AAA:123,BBB:345,CCC:456,DDD:789,EEE:434', '(BBB:)([\\d]+)', 2);

345

select regexp_extract('AAA:343,BBB:222,DDD:989,EEE:344', '(BBB:)([\\d]+)', 2);

222

select regexp_extract('BBB:233,CCC:211,DDD:888,EEE:912', '(BBB:)([\\d]+)', 2);

233