SAP HANA |获取两个字符串之间的字符串
SAP HANA | Get string between two strings
我的 table T -
中有以下数据
ROW Col1
1 utm_source:|utm_medium:kiosk|device:d|expires:Sun, 02 Jun
2019 13:27:28 GMT|IP:10.YYY.YY.YY|
2 IP:10.XXX.XX.XX|storeid:TL04K2|
3 IP:10.YY.YX.XZ|
我需要从此列中获取 IP,它将由字符串开头标识为 'IP:',字符串结尾标识为“|”
在 hana 中用 substring_regexp 可以得到这个吗?
是的,这是可能的,甚至使用您提到的 SUBSTRING_REGEXPR
功能。
只需构建匹配IP:
和|
之间字符串的正则表达式并在函数中使用它:
SELECT ROW
, SUBSTRING_REGEXPR (' -- put your regular expression here -- ' IN "Col1") as IP_EXTRACTED
FROM
T;
有多种方法可以将您的条件表达为正则表达式,一种可能是
IP:([[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3})\|
这将只匹配点之间有 1 到 3 位数字(而不是任何字符)的 IP 地址。
SELECT ROW
, SUBSTRING_REGEXPR ('IP:([[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3})\|'
IN "Col1"
GROUP 1) as IP_EXTRACTED
FROM
T;
尝试使用:
select substr_regexpr('IP:+(?<=IP:)(.*?)(?=\|)' in your column ) from dummy;
我的 table T -
中有以下数据 ROW Col1
1 utm_source:|utm_medium:kiosk|device:d|expires:Sun, 02 Jun
2019 13:27:28 GMT|IP:10.YYY.YY.YY|
2 IP:10.XXX.XX.XX|storeid:TL04K2|
3 IP:10.YY.YX.XZ|
我需要从此列中获取 IP,它将由字符串开头标识为 'IP:',字符串结尾标识为“|”
在 hana 中用 substring_regexp 可以得到这个吗?
是的,这是可能的,甚至使用您提到的 SUBSTRING_REGEXPR
功能。
只需构建匹配IP:
和|
之间字符串的正则表达式并在函数中使用它:
SELECT ROW
, SUBSTRING_REGEXPR (' -- put your regular expression here -- ' IN "Col1") as IP_EXTRACTED
FROM
T;
有多种方法可以将您的条件表达为正则表达式,一种可能是
IP:([[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3})\|
这将只匹配点之间有 1 到 3 位数字(而不是任何字符)的 IP 地址。
SELECT ROW
, SUBSTRING_REGEXPR ('IP:([[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3})\|'
IN "Col1"
GROUP 1) as IP_EXTRACTED
FROM
T;
尝试使用:
select substr_regexpr('IP:+(?<=IP:)(.*?)(?=\|)' in your column ) from dummy;