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

Oracle SQL正则提取MESSAGE列错误码与信息问题求助

解决方案

原查询中Error_Message列的正则表达式断言逻辑错误,导致无法正确捕获目标内容。以下是修正后的查询语句:

SELECT 
    -- 提取错误码,可选保留末尾冒号以匹配预期格式
    REGEXP_SUBSTR(message, 'ORA-\d+:?') AS Error_Code,
    -- 提取第一个ORA-xxx: 到下一个ORA之间的文本
    REGEXP_SUBSTR(message, 'ORA-\d+: (.*?)ORA', 1, 1, 'n', 1) AS Error_Message
FROM TABLE;

关键修正说明:

  • Error_Code:ORA-\d+:? 匹配ORA-加数字序列,末尾的:?表示冒号可选,既能匹配ORA-20000也能匹配ORA-20001:,完全贴合预期结果的格式要求。
  • Error_Message:使用ORA-\d+: (.*?)ORA匹配模式,核心逻辑如下:
    • .*?采用非贪婪匹配,确保只捕获第一个ORA-xxx:到下一个ORA之间的内容,避免过度匹配后续字符。
    • 最后一个参数1指定提取正则表达式中的第一个捕获组(即括号包裹的(.*?)部分),这是Oracle SQL中提取正则子组的标准方式。
    • 'n'参数开启多行模式,确保匹配不受换行符影响(当前数据无换行,但保留该参数可增强兼容性)。

验证结果:

执行上述查询后,将得到与预期完全一致的输出:

Error_code  Error_message
ORA-20000   SAMPLETEXT
ORA-20000   SAMPLETEXT1
ORA-01403   NO data available
ORA-20001:  error

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:07:22