ZGLanguage 解析SQL数据血缘 之 提取子查询语句中的源表名

假设存在 子查询SQL代码 如下:

sql 复制代码
    SELECT CL.OBJECTNO
         , PP.PAYDATE
      FROM NYBDP.O_SS_CL_LOAN_ACCT_STATIS CL
 LEFT JOIN (SELECT AL.PAYDATE
                 , BC.BUSS_NO
              FROM O_CWWS_ACCT_LOAN AL
        INNER JOIN NYBDP.O_CWWS_BUSINESS_DUEBILL BD
                ON 1=1
         LEFT JOIN O_CWWS_BUSINESS_CONTRACT BC
                ON 1=1
           ) PP
        ON 1=1
         ;

若要提取子查询SQL代码中的源表名,可添加 SUB_SELECT 子查询解析配置,如下所示:

sql 复制代码
__DEF_FUZZY__             Y
__DEF_DEBUG__             N
__DEF_CASE_SENSITIVE__    N

__DEF_LINE_COMMENT__      --
__DEF_LINES_COMMENT__     /*     */


__DEF_PATH__    __SELECT__
1             : x1            @          | select
N             : x2            @          | __OTH_COL__
e             : x3            @          | ,
1             : x4            @          | from
              : x5            @          | __TABLE_NAME__
              : x5s           @          + __SUB_SELECT__
N             : x6            @          | __JOIN_TABLE__


__DEF_SUB_PATH__   __OTH_COL__
1       : x1          | __NAME__
        : x2          | .
        : x3          | __NAME__


__DEF_SUB_PATH__       __TABLE_NAME__
1        : 源表           @           | __NAME__
+        : schema         @           | __NAME__
         : pp             @           | .
         : 源表_2         @           | __NAME__
1        : as             @ CAN_SKIP  | as
         : 源表别名       @ CAN_SKIP  | __NAME__


__DEF_SUB_PATH__   __SUB_SELECT__
1       : x1                     | (
        : x2                     | __SELECT__
        : x3                     | )
        : x4         @ CAN_SKIP  | as
        : x5         @ CAN_SKIP  | __NAME__


__DEF_SUB_PATH__    __JOIN_TABLE__
1             : x0      @                | join
+             : x1      @                | inner
              : x2      @                | join
+             : x5      @                | left
              : x6      @ CAN_SKIP       | out
              : x7      @                | join
+             : x12     @                | right
              : x13     @ CAN_SKIP       | out
              : x14     @                | join
+             : x17     @                | full
              : x18     @ CAN_SKIP       | out
              : x19     @                | join
+             : x20     @                | ,
1             : x21     @                | __TABLE_NAME__
              : x2s     @                + __SUB_SELECT__
              : x22     @                | on
              : x23     @                | 1=1


__DEF_STR__   __NAME__
<1,100>
[1,1]ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_??
[0,100]ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_??
[NO] select inner left join on from where group order by having union all with as table

根据语法配置解析结果(导入Excel)如下所示:

根据以上语法标注"源表"可以提取到SQL子查询中的源表名。

相关推荐
明志数科21 分钟前
人形机器人格斗场景下的技术挑战:动力学控制、感知融合与实时决策
网络·数据库
酉鬼女又兒23 分钟前
零基础入门 DeepSeek V4 Pro API 开发:从环境搭建、消息格式规范到翻译函数实战、少样本提示、多轮对话聊天机器人与常见报错全流程详解指南
大数据·网络·数据库·人工智能·macos·机器人·github
笨蛋不要掉眼泪27 分钟前
MySQL架构揭秘:MVCC解决读一致性问题
数据库·mysql·架构
Navicat中国1 小时前
开发者入门:无服务器数据库
数据库·云原生·serverless·navicat
ddshub_cc1 小时前
理解 Loop Engineering 与 AI 编程成本优化
大数据·人工智能·gpt·prompt·ai编程
RestCloud2 小时前
ETL是什么?全域数据集成平台核心能力解析
数据仓库·etl·数据清洗·数据处理·etlcloud·数据集成工具
喵喵喵~~~~2 小时前
2026 指挥控制台源头工厂深度测评:按行业项目落地能力择优采购指南
大数据·运维·人工智能·智能家居
喵喵喵~~~~2 小时前
2026 调度操作台厂商横向实测:多行业落地案例拆解,指挥中心控制台怎么选
大数据·人工智能
hkNaruto2 小时前
【大数据】Demo 城市供水管网智能监控系统——项目开发实施计划
大数据·人工智能
小顿的企业观察2 小时前
从人形机器人到AI销售智能体,AI正在重塑中企出海的底层逻辑
大数据·运维·人工智能·机器人·产品运营·制造