SQL的新手,随时随地学习。
如何在HIVE上的SQL中找到2个冒号之间的文本? 例如。
Text 1: hello:ok:old:yes:age:
Text 2: hello:no:old:yes:hour:
Text 3: hi:fine:old:yes:minute:
我想找到总是在":old:yes:"之后的文字。直到下一个:
Output 1 = age
Output 2 = hour
Output 3= minute
答案 0 :(得分:1)
以下是2个选项
hive> select regexp_extract('hello:ok:old:yes:age:','([^:]+):$',1);
OK
age
hive> select split('hello:ok:old:yes:age:',':')[4];
OK
age
答案 1 :(得分:-1)
您也可以使用patindex从该位置开始直到下一个charindex:
答案 2 :(得分:-1)
试试这个
它应该是工作
select SUBSTRING('hello:ok:old:yes:age:', CHARINDEX('old:yes','hello:ok:old:yes:age:')+8, LEN('hello:ok:old:yes:age:') - CHARINDEX('old:yes','hello:ok:old:yes:age:')-8);