我怀疑使用定界符分割字符串。

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

我的原始字符串: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

07-26 00:20