问题描述
嗨,汤姆,
我正在尝试从一个长字符串中提取多个主机名 (实际上,稍后我将对DBLink-host列使用此方法)。但是,我的查询只能提取第一个主机名。我确实尝试将 {1,0} 放在匹配模式之后 ((主机 | 主机名)[[: 空格:]]*(\ =)[[: 空格:]]*(\ w | \-|\_)*(\.\ w )* |(\ w | \-|\_)*(\.\ w ) |((\ w | \-|\_) $)){1,} ',但仍然无法提取其余的出现匹配。你能帮我吗?谢谢。
= = 查询输出 ===
主机名
--------------------
LXC01-VIP.TEST.COM
预期产出
--------------------
LXC01-VIP.TEST.COM LXC02-VIP.TEST.COM
-我当前的查询-
问候,
安德斯
我正在尝试从一个长字符串中提取多个主机名 (实际上,稍后我将对DBLink-host列使用此方法)。但是,我的查询只能提取第一个主机名。我确实尝试将 {1,0} 放在匹配模式之后 ((主机 | 主机名)[[: 空格:]]*(\ =)[[: 空格:]]*(\ w | \-|\_)*(\.\ w )* |(\ w | \-|\_)*(\.\ w ) |((\ w | \-|\_) $)){1,} ',但仍然无法提取其余的出现匹配。你能帮我吗?谢谢。
= = 查询输出 ===
主机名
--------------------
LXC01-VIP.TEST.COM
预期产出
--------------------
LXC01-VIP.TEST.COM LXC02-VIP.TEST.COM
-我当前的查询-
SELECT REGEXP_REPLACE ( REGEXP_REPLACE ( REGEXP_REPLACE ( REGEXP_SUBSTR ( UPPER ( '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = lxc01-vip.test.com)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = lxc02-vip.test.com)(PORT = 1521)) (LOAD_BALANCE = ON) (FAILOVER = ON) ) (CONNECT_DATA = (SERVICE_NAME = Test) ) )'), '((HOST|主机名)[[:space:]]*(\=)[[:space:]]*(\w+|\-|\_)*(\.\w+)*|(\w+|\-|\_)*(\.\w+)+|((\w+|\-|\_)+$))'), ' ', ''), 'HOST=', ''), '主机名=', '') 主机名 FROM DUAL;
问候,
安德斯
专家解答
检查此链接
https://asktom.oracle.com/pls/apex/asktom.search?tag=convert-comma-separated-values-in-a-column-into-rows-and-join-the-result-set-with-another-table
对于我们如何使用regexp基于逗号 (即CSV到行) 拆分字符串。
它可能看起来是相关的,但概念是-即,我们找到一个匹配 (逗号或在你的情况下是主机),然后迭代 “n” 次使用connect-从-dual拿起第一,第二,等匹配元素。
https://asktom.oracle.com/pls/apex/asktom.search?tag=convert-comma-separated-values-in-a-column-into-rows-and-join-the-result-set-with-another-table
对于我们如何使用regexp基于逗号 (即CSV到行) 拆分字符串。
它可能看起来是相关的,但概念是-即,我们找到一个匹配 (逗号或在你的情况下是主机),然后迭代 “n” 次使用connect-从-dual拿起第一,第二,等匹配元素。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。