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

Oracle SQL:提取字符串中指定语句间的文本内容

Oracle 正则提取指定区间文本解决方案

没问题,我来帮你搞定这个正则提取的需求!下面是调整后的查询语句,能精准提取你要的三个区间内容:

SELECT
  -- 提取 'Pd to LOOK:' 到 'Pd to SEE (swap):' 之间的内容
  REGEXP_SUBSTR(myColumn, 'Pd to LOOK:\s*(.*?)\s*Pd to SEE \(swap\):', 1, 1, NULL, 1) AS look_products,
  -- 提取 'Pd to SEE (swap):' 到 'Pd to SEE (extra):' 之间的内容
  REGEXP_SUBSTR(myColumn, 'Pd to SEE \(swap\):\s*(.*?)\s*Pd to SEE \(extra\):', 1, 1, NULL, 1) AS swap_products,
  -- 提取 'Pd to SEE (extra):' 到 'Contact me: 123456' 之间的内容
  REGEXP_SUBSTR(myColumn, 'Pd to SEE \(extra\):\s*(.*?)\s*Contact me: 123456', 1, 1, NULL, 1) AS extra_products
FROM mytable;

关键细节说明:

  • 转义特殊字符:正则里的()是特殊元字符,所以要加反斜杠\转义成\(swap\),确保匹配到原文里的括号。
  • \s*匹配空白:用来忽略目标关键词前后的空格,避免因为空格差异导致匹配失败。
  • .*?非贪婪匹配:这个设置会让正则匹配到第一个终止关键词就停止,不会过度抓取后面的内容,保证提取的准确性。
  • 第6个参数1:指定返回正则表达式中第1个捕获组(也就是()包裹的部分)的内容,这正是我们要的区间文本。

用你提供的示例数据测试,输出结果完全符合预期:

  • look_products: NOKIA/HMD; APPLE; MI;
  • swap_products: SAMSUNG; VIVO;
  • extra_products: MOKA;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:35:51