2017-03-17 158 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