news 2026/7/7 0:55:22

如何通过‘语法配置’来‘解析SQL’代码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何通过‘语法配置’来‘解析SQL’代码

开源软件 ZGLanguage 通过语法配置,便可以对SQL代码进行解析,如下所示。

当然,不同数据库之间会存在不同的语法特点或方言。

此语法配置实例只囊括了常见的SQL语法结构,用户可以在此基础上根据具体情况进行修改使用。

__DEF_FUZZY__ N __DEF_DEBUG__ N __DEF_CASE_SENSITIVE__ N __DEF_LINE_COMMENT__ -- __DEF_LINES_COMMENT__ /* */ __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 __DEF_STR__ __FLOAT__ <1,100> [1,50]0123456789 [1,1]. [1,50]0123456789 __DEF_STR__ __INT__ <1,100> [1,100]0123456789 __DEF_SUB_PATH__ __STRING__ 1 : | ' : | __ANY__ : | ' __DEF_SUB_PATH__ __DATE_STRING__ 1 : | date : | __STRING__ __DEF_SUB_PATH__ __VAR_NAME__ 1 : | $ : | { : | __NAME__ : | } __DEF_SUB_PATH__ __CASE_WHEN__ 1 : @ | case N : @ | when : @ | __EXPR__ : @ | then : @ | __EXPR__ 1 : @ CAN_SKIP | else : @ CAN_SKIP | __EXPR__ : @ | end __DEF_SUB_PATH__ __DECIMAL__ 111 : | decimal 0 : | ( 01 : | __INT__ 00 : | , 00 : | __INT__ 01 : | ) __DEF_SUB_PATH__ __X_CHAR__ 11 : | varchar : + nvarchar : + char : + varchar2 : + nvarchar2 0 : | ( 0 : | __INT__ 0 : | ) __DEF_SUB_PATH__ __CAST_AS__ 1 : | cast : | ( 1 : | __EXPR__ : | as : | date : + int : + double : + float : + bigint : + __X_CHAR__ : + __DECIMAL__ 1 : | ) __DEF_SUB_PATH__ __FUNCTION__ 11 : @ | __NAME__ : @ + sum : @ + avg : @ + ifnull : @ + coalesce : @ + count : @ + row_number : @ + rank : @ + dense_rank : @ | ( : @ CAN_SKIP | distinct NN : @ CAN_SKIP | __EXPR__ ee : @ CAN_SKIP | , 11 : @ | ) 0 : @ | over 0 : @ | ( 0 : @ CAN_SKIP | __PARTITION_BY__ 0 : @ CAN_SKIP | __ORDER_BY__ 0 : @ | ) __DEF_SUB_PATH__ __SET__ 1 : | ( N : | __STRING__ : + __INT__ : + __FLOAT__ e : | , 1 : | ) __DEF_EXPR__ __EXPR__ __ELE__ null __ELE__ * __ELE__ __NAME__ __ELE__ __INT__ __ELE__ __FLOAT__ __ELE__ __DATE_STRING__ __ELE__ __CASE_WHEN__ __ELE__ __STRING__ __ELE__ __SET__ __ELE__ __CAST_AS__ __ELE__ __FUNCTION__ __OPR__ between 1 __OPR__ and 1 __OPR__ or 1 __OPR__ like 2 __OPR__ = 2 __OPR__ <> 2 __OPR__ != 2 __OPR__ > 2 __OPR__ >= 2 __OPR__ < 2 __OPR__ <= 2 __OPR__ in 2 __OPR__ not in 2 __OPR__ + 3 __OPR__ - 3 __OPR__ * 4 __OPR__ / 4 __OPR__ || 4 __OPR__ . 7 __//__ __BEF__ not exists __//__ __BEF__ exists __BEF__ - __BEF__ + __AFT__ is null __AFT__ is not null __DEF_SUB_PATH__ __TABLE_NAME__ 1 : xx @ | __NAME__ + : x1 @ | __VAR_NAME__ : x2 @ + __NAME__ : x3 @ | . : x4 @ | __NAME__ 1 : x5 @ CAN_SKIP | as : x6 @ CAN_SKIP | __NAME__ __DEF_SUB_PATH__ __WHERE__ 1 : | where N : | __EXPR__ : + __EXISTS_SELECT__ e : | and __DEF_SUB_PATH__ __GROUP_BY__ 11 : | group : | by NN : | __EXPR__ ee : | , 01 : | having 0 : | __EXPR__ __DEF_SUB_PATH__ __ORDER_BY__ 1 : @ | order : @ | by N : @ | __EXPR__ : @ CAN_SKIP | desc : @ + asc e : @ | , __DEF_SUB_PATH__ __PARTITION_BY__ 1 : | partition : | by N : | __EXPR__ e : | , __DEF_SUB_PATH__ __DISTRIBUTED_BY__ 1 : | distributed : | by : | ( N : | __EXPR__ e : | , 1 : | ) __DEF_SUB_PATH__ __SUB_SELECT__ 1 : @ | ( : @ | __UNION_SELECT__ : @ | ) : @ CAN_SKIP | as : @ CAN_SKIP | __NAME__ __DEF_SUB_PATH__ __EXISTS_SELECT__ 01 : | NOT 1 : | EXISTS : | ( : | __SELECT__ : | ) __DEF_SUB_PATH__ __ON_AND__ 1 : | on N : | __EXPR__ e : | and __DEF_SUB_PATH__ __JOIN_TABLE__ 11 : | join ++ : | inner : | join ++ : | left : | join ++ : | left : | out : | join ++ : | right : | join ++ : | right : | join ++ : | right : | out : | join ++ : | full : | join ++ : | full : | out : | join ++ : | , 11 : | __TABLE_NAME__ : + __SUB_SELECT__ 01 : | __ON_AND__ __DEF_SUB_PATH__ __SELECT__ 11 : @ | select : @ CAN_SKIP | distinct NN : @ | __EXPR__ : @ CAN_SKIP | as : @ CAN_SKIP | __NAME__ ee : @ | , 01 : @ | from 0 : @ | __TABLE_NAME__ : @ + __SUB_SELECT__ 0N : @ CAN_SKIP | __JOIN_TABLE__ 01 : @ CAN_SKIP | __WHERE__ 0 : @ CAN_SKIP | __GROUP_BY__ 0 : @ CAN_SKIP | __ORDER_BY__ 0 : @ CAN_SKIP | __DISTRIBUTED_BY__ __DEF_SUB_PATH__ __UNION_SELECT__ 1 : | __SELECT__ N : @ CAN_SKIP | union : @ CAN_SKIP | all : @ CAN_SKIP | __SELECT__ __DEF_PATH__ __SQL_SELECT__ 1 : | __UNION_SELECT__ : | ; __DEF_PATH__ __SQL_CREATE_VIEW__ 1 : | create : | view 1 : | __NAME__ + : | __NAME__ : | . : | __NAME__ + : | __VAR_NAME__ : | . : | __NAME__ 1 : | as : | __SELECT__ : | ; __DEF_PATH__ __SQL_CREATE_TABLE__ 1 : | create 1 : | table + : | temp : | table 1 : | __NAME__ + : | __NAME__ : | . : | __NAME__ + : | __VAR_NAME__ : | . : | __NAME__ 1 : | as : | __SQL_SELECT__ : + __WITH_AS_SELECT__ __DEF_PATH__ __SQL_INSERT_INTO__ 11 : | insert : | into 11 : | __NAME__ ++ : | __NAME__ : | . : | __NAME__ ++ : | __VAR_NAME__ : | . : | __NAME__ 01 : | ( 0N : | __NAME__ 0e : | , 01 : | ) 1 : | __SQL_SELECT__ : + __WITH_AS_SELECT__ __DEF_PATH__ __WITH_AS_SELECT__ 11 : @ | with : @ | __NAME__ : @ | as : @ | ( : @ | __UNION_SELECT__ : @ + __WITH_AS_SELECT__ : @ | ) 0N : @ | , 0 : @ | __NAME__ 0 : @ | as 0 : @ | ( 0 : @ | __UNION_SELECT__ : @ + __WITH_AS_SELECT__ 0 : @ | ) 11 : @ | __UNION_SELECT__ : @ | ;

ZGLanguage 的开源地址:

https://gitee.com/zgl-20053779/zglanguage

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 16:35:42

基于SpringBoot + Vue的校园周边美食探索及分享平台

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 &#x1f49b;博主介绍&#…

作者头像 李华
网站建设 2026/7/7 18:10:23

爱查分教师评语推荐,结合成绩数据的温暖个性化点评

摘要Top Pick&#xff1a;爱查分 核心价值&#xff1a;让教师评语从千篇一律变成真正触动家长的个性化点评 关键亮点&#xff1a;AI智能生成评语初稿 基于真实成绩数据分析 一键批量生成全班评语 可逐条修改添加温度 自动识别学生进步亮点 关键数据&#xff1a;单次评语生成…

作者头像 李华
网站建设 2026/7/7 16:35:09

22、Bash 脚本高级技巧:代码复用、函数定义与信号处理

Bash 脚本高级技巧:代码复用、函数定义与信号处理 在编写 Bash 脚本时,为了提高代码的复用性和可维护性,我们可以采用多种技巧。下面将为大家详细介绍代码复用、函数定义、参数传递与返回值、信号捕获以及命令重定义等方面的内容。 代码复用:包含与源文件 在编写脚本时,…

作者头像 李华
网站建设 2026/7/7 18:49:24

赋能金融租赁,菊风中标浙银金租视频双录系统项目,打造金融租赁合规运营范式

面对金融租赁行业日益趋严的合规要求与高质量发展的内生需要&#xff0c;AI与音视频技术正成为机构实现流程规范化、风控智能化的重要支撑。菊风Juphoon近日中标浙银金租视频双录系统服务项目&#xff0c;将以实时智能质检、全流程自动化等能力&#xff0c;助力客户筑牢业务合规…

作者头像 李华
网站建设 2026/7/7 14:46:15

浅谈池化技术的优雅关闭

文章目录引言阻塞式中断的哲学线程停止准则强制关闭线程池的弊端基于原子化标识优雅关闭无界队列与毒丸消费用后即焚的线程池利用实现shutdownNow线程中断与取消可监控设计与实现思路功能落地注意事项使用注意事项小结参考引言 我们大部分情况下并发任务都是交由提前设置好的线…

作者头像 李华
网站建设 2026/7/7 21:35:24

Qwen CLI终极指南:从零开始掌握命令行交互技巧

Qwen CLI终极指南&#xff1a;从零开始掌握命令行交互技巧 【免费下载链接】Qwen The official repo of Qwen (通义千问) chat & pretrained large language model proposed by Alibaba Cloud. 项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen 通义千问&…

作者头像 李华