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

Oracle使用REGEXP_SUBSTR提取SQL中带点分隔的字段字符串

Oracle 用REGEXP_SUBSTR提取SQL中「表别名.字段名」格式标识符实现

需求场景

从存储SQL语句的文本中,精准提取包含半角点号、符合表别名.字段名格式的标识符,示例输入SQL如下:

select FRL_ATTRIBUTE_DESCRIPTION from  FRL_ATTRIBUTES WHERE FRL_ATTRIBUTE_LEVEL =9 AND FRL_Lines_PL.FRL_ATTRIBUTE_09 = FRL_ATTRIBUTE

预期提取结果:

FRL_Lines_PL.FRL_ATTRIBUTE_09

实现代码

直接调用REGEXP_SUBSTR函数搭配适配正则即可,针对示例的测试代码:

SELECT REGEXP_SUBSTR(
    'select FRL_ATTRIBUTE_DESCRIPTION from  FRL_ATTRIBUTES WHERE FRL_ATTRIBUTE_LEVEL =9 AND FRL_Lines_PL.FRL_ATTRIBUTE_09 = FRL_ATTRIBUTE',
    '[A-Za-z0-9_]+\.[A-Za-z0-9_]+'
) AS target_col
FROM dual;

执行上述代码即可得到预期输出。

规则说明

  • 所用正则[A-Za-z0-9_]+\.[A-Za-z0-9_]+的匹配逻辑:识别连续的数据库合法标识符字符(字母、数字、下划线),中间包含1个半角点号,点号前后均为合法标识符片段,刚好匹配「表别名.字段名」的格式
  • 如果待处理的SQL文本中存在多个符合格式的标识符,可以通过REGEXP_SUBSTR的第四个参数指定提取第几个匹配项,参数值从1开始计数。例如要提取文本中第1个符合格式的内容,写法如下:
REGEXP_SUBSTR(存储SQL文本的字段, '[A-Za-z0-9_]+\.[A-Za-z0-9_]+', 1, 1)

注意:该正则默认适配Oracle标准对象命名规则,如果业务中的标识符包含其他特殊字符,对应调整正则的字符匹配范围即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:18:26