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

pu3pd22g  于 2021-06-26  发布在  Hive
关注(0)|答案(3)|浏览(461)

我是sql新手,边学习边学习。
如何在配置单元上的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
w46czmvw

w46czmvw1#

这里有两个选项

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

rqmkfv5c2#

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

qv7cva1a

qv7cva1a3#

试试这个
应该是工作

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

相关问题