相关文章推荐
博学的枇杷  ·  SQL中的嵌套CASE语句 - ·  1 月前    · 
唠叨的硬盘  ·  如何实现MySQL case when ...·  1 月前    · 
微笑的青蛙  ·  selenium ...·  1 月前    · 
帅呆的篮球  ·  子查詢 (SQL Server) - ...·  1 月前    · 
豪爽的热水瓶  ·  How to export a Hive ...·  1 周前    · 
冷静的乌冬面  ·  【图】路特斯机器人多项科技亮相CES,秀翻全 ...·  1 年前    · 
忐忑的钢笔  ·  jchsinker-java去重写click ...·  1 年前    · 
微醺的荔枝  ·  html字体加下划线效果-掘金·  2 年前    · 
精明的台灯  ·  mysql导入oracle dmp文件-掘金·  2 年前    · 
玩足球的红薯  ·  嵌入式Linux平台部署AI神经网络模型In ...·  2 年前    · 
Code  ›  Java中如何解析SQL语句、格式化SQL语句、生成SQL语句?开发者社区
select
https://cloud.tencent.com/developer/article/2238125?areaSource=&traceId=
淡定的核桃
2 年前
作者头像
程序猿川子
0 篇文章

Java中如何解析SQL语句、格式化SQL语句、生成SQL语句?

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 用户9379187的专栏 > Java中如何解析SQL语句、格式化SQL语句、生成SQL语句?

Java中如何解析SQL语句、格式化SQL语句、生成SQL语句?

作者头像
程序猿川子
发布 于 2023-03-10 17:09:34
800 0
发布 于 2023-03-10 17:09:34
举报

JSqlParser

JSqlParser是一个用Java编写的SQL解析器,可以将SQL语句解析为Java对象,从而使开发人员能够轻松地分析、修改和重构SQL查询。

比如,这样的一句SQL语句 SELECT 1 FROM dual WHERE a = bSELECT 1 FROM dual WHERE a = b

JSqlParser 可以将其解析为如下对象结构

 SQL Text
  └─Statements: net.sf.jsqlparser.statement.select.Select
     └─selectBody: net.sf.jsqlparser.statement.select.PlainSelect
        ├─selectItems -> Collection<SelectExpressionItem>
        │  └─selectItems: net.sf.jsqlparser.statement.select.SelectExpressionItem
        │     └─LongValue: 1
        ├─Table: dual
        └─where: net.sf.jsqlparser.expression.operators.relational.EqualsTo
           ├─Column: a
           └─Column: b
复制代码

然后我们就可以通过其提供的API来访问这句SQL语句中的各个要素:

Statement statement = CCJSqlParserUtil.parse(sqlStr);
if (statement instanceof Select) {
    Select select = (Select) statement;
    PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
    SelectExpressionItem selectExpressionItem =
            (SelectExpressionItem) plainSelect.getSelectItems().get(0);
    Table table = (Table) plainSelect.getFromItem();
 
推荐文章
博学的枇杷  ·  SQL中的嵌套CASE语句 -
1 月前
唠叨的硬盘  ·  如何实现MySQL case when 套用子查询的具体操作步骤_mob649e81540090的技术博客_
1 月前
微笑的青蛙  ·  selenium 难定位元素,时间插件,下拉框定位,string - konglingbin
1 月前
帅呆的篮球  ·  子查詢 (SQL Server) - SQL Server | Microsoft Learn
1 月前
豪爽的热水瓶  ·  How to export a Hive table into a CSV file? - Stack Overflow
1 周前
冷静的乌冬面  ·  【图】路特斯机器人多项科技亮相CES,秀翻全场!_汽车之家
1 年前
忐忑的钢笔  ·  jchsinker-java去重写clickhouse-天翼云开发者社区 - 天翼云
1 年前
微醺的荔枝  ·  html字体加下划线效果-掘金
2 年前
精明的台灯  ·  mysql导入oracle dmp文件-掘金
2 年前
玩足球的红薯  ·  嵌入式Linux平台部署AI神经网络模型Inference的方案 - 简书
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号