gpt4 book ai didi

regex - 如何在 Oracle 11g regexp_substr 函数中使用两个定界符拆分字符串

转载 作者:行者123 更新时间:2023-12-02 01:14:11 37 4
gpt4 key购买 nike

我对使用定界符拆分字符串有疑问。

首先拆分基于 , 分隔符选择那些拆分的字符串应该基于 - 分隔符拆分

我的原始字符串:UMC12I-1234,CSM3-123,VQ,预期输出:

UMC12I
CSM3
VQ

每个值都是行值

我试过这个选项

WITH fab_sites AS (
SELECT trim(regexp_substr('UMC12I-1234,CSM3-123,VQ,', '[^,]+', 1, LEVEL)) fab_site
FROM dual
CONNECT BY LEVEL <= regexp_count('UMC12I-1234,CSM3-123,VQ,', '[^,]+')+1
)
SELECT fab_site FROM fab_sites WHERE fab_site IS NOT NULL

-- 根据,分隔符拆分

输出是:

UMC12I-1234
CSM3-123
VQ

如何获得预期的输出? (需要再次拆分 - 分隔符)

最佳答案

您可以使用 regexp_substr 提取 - 之前的“单词”

([^,-]+)(-[^,-]+)?

该模式将匹配并捕获第 1 组中除 - 之外的一个或多个字符,然后将匹配一个可选序列- 和除 - 之外的 1+ 个字符。

参见 regex demo .

在上面的正则表达式中使用此 regex_substr 行而不是您的行:

SELECT trim(regexp_substr('UMC12I-1234,CSM3-123,VQ,', '([^,-]+)(-[^,-]+)?', 1, LEVEL, NULL, 1)) fab_site

参见 online demo

关于regex - 如何在 Oracle 11g regexp_substr 函数中使用两个定界符拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43503292/

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