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

Oracle SQL从错误信息提取指定错误码的实现优化咨询

解决方案

核心逻辑调整

原逻辑通过拆分错误信息按空格匹配的方式存在局限,修改为直接遍历所有目标错误码,逐个检查是否存在于错误信息中,无需拆分错误信息,即可匹配到和其他字符连在一起的错误码。

修改后的查询代码(无需调整现有split函数)

select chk.*, Error_codes
from CHECK_ chk
join (
    select 
        CLAIM_NO,
        listagg(t2.column_value, ',') within group (order by t2.column_value) Error_codes
    from (
        select 
            CLAIM_NO,
            Error_Message c1,
            '40000109 40000083 40000098 40000101 40000076 40000097 40000088 40000081' c2 
        from CHECK_
    ) t 
    cross join table(split(c2)) t2
    -- 可根据场景二选一使用下方匹配条件
    -- 方案1:严格匹配,避免误匹配到包含目标错误码的更长数字串(推荐)
    where REGEXP_LIKE(t.c1, '(^|\D)' || t2.column_value || '(\D|$)')
    -- 方案2:简单匹配,性能更高,无特殊需求可使用
    -- where INSTR(t.c1, t2.column_value) > 0
    group by CLAIM_NO
) ss on chk.CLAIM_NO = ss.CLAIM_NO

调整说明

  • 移除了原逻辑中拆分错误信息的步骤,仅保留对目标错误码列表的拆分操作
  • 正则匹配规则中的(^|\D)代表字符串开头或非数字字符,(\D|$)代表非数字字符或字符串结尾,可避免把类似140000097中的40000097误判为匹配
  • 若错误信息中存在多个匹配的错误码,会按顺序用逗号拼接输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:09:02