我怀疑使用定界符分割字符串。
首先基于,分隔符进行拆分选择那些应基于-分隔符拆分的字符串
我的原始字符串: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