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

How can I find the text between two colons

SQL 的新手,边学边学。

如何在 HIVE 上找到 SQL 中两个冒号之间的文本? 例如。

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

您也可以使用 patindex 从该位置开始直到下一个 charindex for :

这里有2个选项

hive> select regexp_extract('hello:ok:old:yes:age:','([^:]+):$',1);
OK
age

hive> select split('hello:ok:old:yes:age:',':')[4];
OK
age

试试这个

应该可以工作

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