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;