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

Oracle中使用REGEXP_SUBSTR提取指定标识后内容的技术求助

Oracle 字符串提取解决方案

针对你需要从指定字符串中提取Book :、Asset Number :等字段后续内容的需求,利用Oracle的REGEXP_SUBSTR结合正则捕获组可以精准实现。以下是具体实现方案:

单个字段提取示例

提取Book对应值

REGEXP_SUBSTR(xal.DESCRIPTION, 'Book : (.*?)(, |$)', 1, 1, NULL, 1) AS book_value
  • 正则逻辑:Book : 匹配固定前缀,(.*?)非贪婪捕获后续内容(直到遇到, 或字符串结尾),最后一个参数1指定提取第一个捕获组的内容。

提取Asset Number对应值

REGEXP_SUBSTR(xal.DESCRIPTION, 'Asset Number : (.*?)(, |$)', 1, 1, NULL, 1) AS asset_number_value

提取Transaction Number对应值

REGEXP_SUBSTR(xal.DESCRIPTION, 'Transaction Number : (.*?)(, |$)', 1, 1, NULL, 1) AS transaction_number_value

完整查询语句

SELECT
  REGEXP_SUBSTR(xal.DESCRIPTION, 'Book : (.*?)(, |$)', 1, 1, NULL, 1) AS book,
  REGEXP_SUBSTR(xal.DESCRIPTION, 'Asset Number : (.*?)(, |$)', 1, 1, NULL, 1) AS asset_number,
  REGEXP_SUBSTR(xal.DESCRIPTION, 'Transaction Number : (.*?)(, |$)', 1, 1, NULL, 1) AS transaction_number
FROM your_table xal;

关键说明

  • 你原语句使用的[^_]+是按下划线分割字符串,完全不匹配当前需求,必须替换为匹配目标字段前缀的正则表达式。
  • 非贪婪匹配.*?能避免误捕获后续其他字段内容,确保只提取当前字段到下一个分隔符的内容。
  • 如果存在字段缺失的情况,函数会返回NULL,可根据业务需求用NVL函数做默认值处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:05:56