首先添加Maven依赖:

com.github.jsqlparser

jsqlparser

1.2

然后使用下面的样例进行测试:

package com.zifeiy.test.sqlaffair;

import java.util.Iterator;

import java.util.List;

import net.sf.jsqlparser.JSQLParserException;

import net.sf.jsqlparser.parser.CCJSqlParserUtil;

import net.sf.jsqlparser.statement.Statement;

import net.sf.jsqlparser.statement.select.Select;

import net.sf.jsqlparser.util.TablesNamesFinder;

public class JSqlParserTest {

public static void test(String sql) throws JSQLParserException {

Statement statement = CCJSqlParserUtil.parse(sql);

Select selectStatement = (Select) statement;

TablesNamesFinder tablesNamesFinder = new TablesNamesFinder();

List tableList = tablesNamesFinder.getTableList(selectStatement);

for (Iterator iter = tableList.iterator(); iter.hasNext();) {

String tableName = (String) iter.next();

System.out.println(tableName);

}

}

public static void main(String[] args) throws JSQLParserException {

test("select a.c1,b.c2,c.* from tbl_a a left join tbl_b b on a.c3=b.c3 left join tbl_c c on a.c4=b.c4 where c.c5='tbl_d'");

}

}

输出结果如下:

tbl_a

tbl_b

tbl_c

可以看到,这个样例成功地获得了SQL:

select a.c1,b.c2,c.* from tbl_a a left join tbl_b b on a.c3=b.c3 left join tbl_c c on a.c4=b.c4 where c.c5='tbl_d

中使用了 tbl_a, tbl_b, tbl_c 这三张表。

参考链接:

jsqlparser mysql_使用JSQLParser解析SQL中涉及到的表相关推荐

  1. SQL中 left join 左表合并去重实用技巧

     作者:ZhaoYingChao88 zyc88.blog.csdn.net/article/details/83002882 建表: CREATE TABLE `table1` (`id` int( ...

  2. mysql树状查询优化_解析SQL中树形分层数据的查询优化

    在数据查询中,从2008开始SQL Server提供了一个新的数据类型hierarchyid,专门用来操作层次型数据结构. hierarchyid 类型对层次结构树中有关单个节点的信息进行逻辑编码的方 ...

  3. 解析SQL中内连接、外连接、完全连接、笛卡尔积关系

    在SQL新手菜鸟开发中,最多运用的就是多表查询,熟悉掌握该运用哪种查询时,可以大大减轻开发时间.下面为大家解释这四种关联关系: 两个表:分别是表A和表B 实例表 1.内连接:只返回满足条件的数据 I ...

  4. [导入]SQL中的临时表和表变量

    我们经常使用临时表和表变量,那现在我们就对临时表和表变量进行一下讨论. 临时表 局部临时表 全局临时表 表变量 临时表 临 时表存储在TempDB数据库中,所有的使用此SQL Server 实例的用户 ...

  5. Sql中如何将数据表的两个字段的值如何互换?

    今天遇到一个数据表的两个列数据要互换,在网上找到并记录下. 直接用Sql就可以搞定,语法如下 --将数据表中两个列数据互换的语法-- update tabName set field1=field2, ...

  6. SQL笔记:SQL中的数据透视表

    以下是在MySQL中通过SQL语句实现Excel中数据透视表/交叉表/二维表的功能.原理不作赘述,具体示例与代码如下: 1. 数据源预览 SELECT * FROM pivot_table; 2. 数 ...

  7. mysql 删除另一个表中的_mysql – 在一个查询SQL中删除两个表中的记录

    我有两张桌子 EMPGROUP_TBL SEQID | MASTERID | BUSINESS_UNIT | DIVISION | SUB_DIVISION | CLASSIFICATION | SU ...

  8. SQL中永久的修改表的字段名字

    永久修改字段名字,需要创建新表 原表: select *from sony_members; 短暂修改表的字段名字: select age as age2 from sony_members; 永久修 ...

  9. mysql多表查询连接的种类_MySQL中基本的多表连接查询教程

    一.多表连接类型1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如: 由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE ...

最新文章

  1. Android常用URI收藏
  2. css/js压缩工具
  3. windows查看进程线程的命令pslist
  4. linux软链接的创建、删除和更新
  5. Kyoya and Photobooks
  6. MySQL中update修改数据与原数据相同会再次执行吗
  7. 爬虫-视频资源的爬取
  8. 乱谈卡巴CCTV黄金时段广告
  9. vmware tools 的安装(Read-only file system 的解决)
  10. 转载:获取数据库中的所有表 (C#实现)
  11. 18.docker top
  12. Masonry的使用
  13. OpenCV-图像处理(32、点多边形测试)
  14. 在IBM AIX p750小机上为Oracle扩展逻辑卷-视频分享
  15. 二、正确看待博弈论和经典理论的理论定位
  16. C++ 关于ShowWindow()的疑问
  17. 525、Java工程师的进阶之路 -【 RocketMQ (二)】 2022.01.06
  18. 计算机模拟仿真实例,计算机模拟仿真系统,computer simulation system,音标,读音,翻译,英文例句,英语词典...
  19. 如何整理碎片化的知识?
  20. PyautoGui常用教程(鼠标、键盘)

热门文章

  1. 芒果超媒上半年营收67亿:同比降15% 广告收入降31%
  2. linux查询内存、CPU、硬盘等系统信息的命令
  3. 分享82个HTML电子产品模板,总有一款适合您
  4. Windows(win)10安装JDK并配置环境变量(附网盘下载地址)
  5. three.js-线上运动的光效
  6. 360 se html document 广告,360浏览器弹窗广告如何关闭?教你彻底删除屏蔽360se.exe广告!...
  7. Angiopep-PEG-DSPE Angiopep聚乙二醇磷脂 Angiopep-PEG2000-DSPE
  8. Linux Vim插件管理器Vundle安装和使用
  9. 如何获取ul中的li的索引
  10. 在 JavaScript 如何下载文件