我的表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地址将以字符串开头标识为“ IP:”,以字符串结尾标识为“ |”
是否可以在花名中使用substring_regexp来获得它?
答案 0 :(得分:2)
尝试使用:
int
答案 1 :(得分:0)
是的,即使您使用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;