当前位置: 首页 > news >正文

如何通过‘语法配置’来‘解析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

http://www.jsqmd.com/news/98417/

相关文章:

  • 29、网络文件系统(NFS)的锁管理与性能分析
  • 基于SpringBoot + Vue的校园周边美食探索及分享平台
  • 30、网络文件系统(NFS)性能优化与配置指南
  • 7.抽象数据类型
  • 零工风险如何“防患于未然”?盖雅AI风控与四流合一体系深度解析
  • Langchain-Chatchat安装包下载慢?试试国内镜像源
  • 小型无人机轻量化且节约成本的几种方法
  • 职业迷茫与协议化服务助力发展
  • ESG视角下的零工管理:让每一份工作被看见,让每一位劳动者被尊重
  • 定制的esp32板子不能正常启动,上电白屏,终极解决方案
  • 建筑与装饰工程招标控制价编制——以蒲江县朝阳社区幼儿园为例(任务书)
  • 31、网络文件系统与集群监控管理
  • ContextMenumanager注册表修改指南:为TensorFlow脚本添加右键执行
  • 详解NVIDIA TensorRT层融合技术对吞吐量的提升效果
  • 初级会计实务第二章第二节:会计科目与账户
  • 换同义词真的没用!深扒知网AIGC检测原理,实测3款降ai率工具,谁能稳过检测?
  • 初级会计实务第二章真题汇编(含完整选项 + 答案 + 解析)
  • LangFlow构建舆情分析系统的技术路径
  • 2025年十大口碑好的考驾照驾校排行榜,新测评精选驾驶证考试 - 工业品牌热点
  • 炸裂!从纯噪声到神级画作,只需几秒?扩散模型 + DALL·E 的黑魔法,全在这里揭秘了!
  • PaddlePaddle镜像下载加速:使用清华源提升git clone效率
  • 如何在Ubuntu上安装PaddlePaddle并配置CUDA加速(附完整docker安装教程)
  • 2025年热门的精品礼盒印刷/包装礼盒印刷专业口碑排行榜 - 品牌宣传支持者
  • 巨大的数字计算
  • PaddlePaddle视觉套件PaddleDetection安装包获取与diskinfo下载官网替代方案
  • 基于细粒度情感建模的语音大模型生成与感知
  • Excalidraw如何嵌入网页?Three.js开发者必看集成方案
  • 爱查分教师评语推荐,结合成绩数据的温暖个性化点评
  • 鸿蒙Electron跨设备实战:分布式数据流转与实时共享方案
  • AI测试学习记录