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

如何用Oracle REGEXP_SUBSTR提取指定格式的病例编号?

解决Oracle REGEXP_SUBSTR提取病例编号的问题

你的正则表达式有两个关键错误导致返回NULL:

  • 匹配文本用了英文Case:,但实际字段里是中文“病例编号:”,完全不匹配
  • 编号部分的正则逻辑错误:[0-9]\-\[0-9]是匹配数字-[0-9]这个字符串(因为\[是转义的左括号),和目标格式SPXX-XXXXX完全不符

正确的提取代码

如果要提取完整的“病例编号: SP12-34567”字符串,用这个:

REGEXP_SUBSTR(BSE.NOTES, '病例编号:\s*SP\d{2}-\d{5}', 1, 1, NULL) AS CASE_NUMB

如果只需要提取编号部分(比如SP12-34567),可以用分组捕获(Oracle 11g及以上支持指定分组):

REGEXP_SUBSTR(BSE.NOTES, '病例编号:\s*(SP\d{2}-\d{5})', 1, 1, NULL, 1) AS CASE_NUMB

正则表达式说明

  • 病例编号::精确匹配中文的标签文本
  • \s*:匹配任意数量的空白字符(包括多个空格、制表符,对应字段里的大量空格)
  • SP\d{2}-\d{5}:匹配目标编号格式:
    • SP:固定前缀
    • \d{2}:两位数字(比如示例里的12)
    • -:连字符
    • \d{5}:五位数字(比如示例里的34567)

如果你的编号数字位数可能有变化(比如有时是6位),可以把\d{5}改成\d{5,6}来兼容5-6位数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:21:56