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

Oracle提取CLOB字段指定模式字符串所有匹配项的查询问题

修正Oracle CLOB字段多匹配项提取查询

原查询的问题在于REGEXP_SUBSTR函数的第4个参数(匹配位置索引)固定写死为1,导致每行都只返回第一个匹配结果。只需要把这个参数替换为cross join生成的level值,就能依次提取第N个匹配项。

修正后的查询语句:

SELECT 
    objectid,
    REGEXP_SUBSTR(DATA, 'RES_GetResData_Public_ScreenPrint[^|]+', 1, level) column1 
FROM perftest.NRS_DATASOURCEDATA_A_Test 
CROSS JOIN TABLE(
    CAST(MULTISET(
        SELECT level FROM dual 
        CONNECT BY level <= REGEXP_COUNT(DATA, 'RES_GetResData_Public_ScreenPrint')
    ) AS sys.odcinumberlist)
)

说明

  • REGEXP_SUBSTR的第4个参数level会随着connect by生成的层级数变化,第一次取第1个匹配项,第二次取第2个,以此类推
  • 确保REGEXP_COUNT的匹配模式和REGEXP_SUBSTR的一致,避免生成的行数和实际匹配数不匹配

内容的提问来源于stack exchange,提问作者As0608

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:13:13