gpt4 book ai didi

sql - Oracle regexp_substr - 从不同格式的字符串中提取子字符串

转载 作者:搜寻专家 更新时间:2023-10-30 23:32:08 25 4
gpt4 key购买 nike

我有一个以不同格式出现的字符串,如下所示:

UserId=1;IP Address=85.154.221.54;Device Type=Chrome57
Device Type=Chrome57;IP Address=85.154.221.54
Device Type=Chrome57

如果不匹配,如何提取 IP 地址并返回空字符串?

我尝试了以下方法,但如果没有匹配项,它会返回字符串本身。

select regexp_replace('Error=0;UserId=-1;IP Address=85.154.221.54;Device Type=Chrome57', '.*IP Address=(.+);.*', '\1') from dual;

最佳答案

您可以将 REGEXP_SUBSTR 与稍微改进的模式一起使用:

select regexp_substr('Error=0;UserId=-1;IP Address=85.154.221.54;Device Type=Chrome57',
'IP Address=([0-9.]+)',
1, 1, NULL, 1
)
from dual

在这里,

  • IP Address= - 匹配 IP Address=
  • ([0-9.]+) - 将一个或多个数字或/和 匹配并捕获到第 1 组。

查看 online demo .如果没有匹配项,输出将为 NULL

select regexp_substr('Error=0;UserId=-1;IP Address=85.154.221.54;Device Type=Chrome57',
'IP Address=([0-9.]+)',
1, 1, NULL, 1
) as Result
from dual
-- => 85.154.221.54
--select regexp_substr('Error=0;UserId=-1;IP Address= Device Type=Chrome57', 'IP Address=([0-9.]+)', 1, 1, NULL, 1) as result from dual
-- => NULL

enter image description here

请注意,REGEXP_SUBSTR 函数的最后一个 1 参数返回捕获组 #1 的内容(用模式的第一个括号部分捕获的文本)。

关于sql - Oracle regexp_substr - 从不同格式的字符串中提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48075021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com