2017-03-17 129 views
1

如果此数据位于名为“pages”的列中,并且我希望每个具有':old:yes:'的行在'yes:'后返回字符串,regexp_extract如何更改并且在下一个字符串之前?从字符串中提取数据sql

页(表名)

hello:ok:old:yes:age:test:jack 
hello:no:old:yes:hour:black:nancy 
hi:fine:old:yes:minute:white:jason 

正如你可以看到“:老:没错:”是我的出发点和我想的REGEXP_EXTRACT冒号之前返回下一个文本。在上面的例子中,我希望下面的结果:

age 
hour 
minute 

回答

2
select regexp_extract(page,':old:yes:([^:]+)',1) 
from pages 
where page like '%:old:yes:%' 

+--------+ 
| age | 
| hour | 
| minute | 
+--------+ 
+0

真棒! - 谢谢 – Sarah

+0

你能帮助解决这个问题:https://stackoverflow.com/questions/46370135/how-to-remove-duplicates-while-doing-count-distinct-in-hiveql – Sarah