如何找到两个冒号之间的文本
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);
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);