You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用REGEXP_SUBSTR提取字符串中所有C开头的编码?

用REGEXP_SUBSTR提取以C开头的编码方案

针对你的需求,这里提供仅使用REGEXP_SUBSTR(结合Oracle层级查询与聚合函数)的实现方式,最终得到逗号分隔的目标编码:

完整SQL语句

SELECT LISTAGG(REGEXP_SUBSTR(target_str, 'C[^,]+', 1, LEVEL), ',') WITHIN GROUP (ORDER BY LEVEL) AS c_codes
FROM (
    -- 替换为你的原查询结果,此处直接使用目标字符串示例
    SELECT 'B211-C342,B211-C767,B211-C768,B211-C769,B211-C999' AS target_str FROM dual
)
CONNECT BY LEVEL <= REGEXP_COUNT(target_str, 'C[^,]+');

关键部分说明

  • 正则模式C[^,]+:匹配以C开头、后续所有非逗号的字符,精准定位每个目标编码。
  • REGEXP_SUBSTR(..., 1, LEVEL):通过LEVEL参数循环提取第N个匹配项,配合CONNECT BY生成对应数量的行。
  • REGEXP_COUNT:统计字符串中符合模式的匹配次数,控制层级循环的次数,避免生成多余行。
  • LISTAGG:将多行提取的编码拼接成逗号分隔的单一字符串,得到预期格式的结果。

执行上述语句后,输出结果即为:C342,C767,C768,C769,C999

内容的提问来源于stack exchange,提问作者Alagu Saravanan Perumal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 21:42:10