news 2026/8/7 14:14:14

如何通过‘语法配置’来‘解析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/8/6 16:28:43

沃虎 SFP 连接器核心优势解析:高速传输与场景适配双突破

在数据中心、工业以太网和 5G 基站的高速互联场景中&#xff0c;SFP&#xff08;小型可插拔&#xff09;连接器作为关键接口部件&#xff0c;其性能直接决定链路稳定性。沃虎&#xff08;VOOHU&#xff09;深耕连接器领域十余年&#xff0c;推出的全系列 SFP 连接器凭借模块化设…

作者头像 李华
网站建设 2026/8/7 9:07:52

手把手教你用Excalidraw + AI快速绘制技术架构图(附GitHub项目地址)

手把手教你用 Excalidraw AI 快速绘制技术架构图 在一次深夜的系统重构讨论中&#xff0c;团队成员对着屏幕里密密麻麻的文字需求文档皱眉&#xff1a;“这逻辑关系能不能画出来&#xff1f;”——这个再普通不过的瞬间&#xff0c;正是无数工程师遭遇沟通瓶颈的真实写照。我…

作者头像 李华
网站建设 2026/8/7 10:52:20

Lostlife2.0任务系统智能化:LLama-Factory驱动动态任务生成

Lostlife2.0任务系统智能化&#xff1a;LLama-Factory驱动动态任务生成 在今天的开放世界游戏中&#xff0c;玩家早已不再满足于“前往A点、击败B怪、带回C物品”这种千篇一律的任务链条。他们期待的是一个能感知自身状态、理解行为偏好、甚至记住过往选择的“活”的游戏世界。…

作者头像 李华
网站建设 2026/8/7 15:24:12

PyTorch 1.8与TensorFlow 2.5 GPU版本安装指南

PyTorch 1.8 与 TensorFlow 2.5 GPU 环境搭建实战指南 在深度学习项目中&#xff0c;最让人头疼的往往不是模型设计&#xff0c;而是环境配置——尤其是当你面对多个框架、不同 CUDA 版本和驱动兼容性问题时。PyTorch 1.8 和 TensorFlow 2.5 的发布带来了对新一代 NVIDIA 显卡…

作者头像 李华
网站建设 2026/8/7 6:40:34

LangFlow构建舆情分析系统的技术路径

LangFlow构建舆情分析系统的技术路径 在社交媒体主导信息传播的今天&#xff0c;企业对公众情绪的感知能力直接关系到品牌声誉与危机响应效率。一条负面评论可能在几小时内演变为全网热议&#xff0c;如何快速、准确地从海量非结构化文本中提取关键洞察&#xff0c;成为现代舆情…

作者头像 李华
网站建设 2026/8/7 13:47:39

1.运算符重载

1.运算符重载函数重载&#xff0c;函数们在执行相同的操作&#xff0c;但是操作的对象的数据类型不同。运算符重载允许赋予C运算符多种含义。C根据操作数的数目和类型来决定采用哪种操作。例如&#xff1a;两个数组相加。正常来说要&#xff1a;for(ing i 0; i < 20; i) {s…

作者头像 李华