如何找到两个冒号之间的文本

时间:2017-03-15 23:06:33

标签: sql hive hiveql hue

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

3 个答案:

答案 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);