jsqlparser mysql_使用JSQLParser解析SQL中涉及到的表
首先添加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中涉及到的表相关推荐
- SQL中 left join 左表合并去重实用技巧
作者:ZhaoYingChao88 zyc88.blog.csdn.net/article/details/83002882 建表: CREATE TABLE `table1` (`id` int( ...
- mysql树状查询优化_解析SQL中树形分层数据的查询优化
在数据查询中,从2008开始SQL Server提供了一个新的数据类型hierarchyid,专门用来操作层次型数据结构. hierarchyid 类型对层次结构树中有关单个节点的信息进行逻辑编码的方 ...
- 解析SQL中内连接、外连接、完全连接、笛卡尔积关系
在SQL新手菜鸟开发中,最多运用的就是多表查询,熟悉掌握该运用哪种查询时,可以大大减轻开发时间.下面为大家解释这四种关联关系: 两个表:分别是表A和表B 实例表 1.内连接:只返回满足条件的数据 I ...
- [导入]SQL中的临时表和表变量
我们经常使用临时表和表变量,那现在我们就对临时表和表变量进行一下讨论. 临时表 局部临时表 全局临时表 表变量 临时表 临 时表存储在TempDB数据库中,所有的使用此SQL Server 实例的用户 ...
- Sql中如何将数据表的两个字段的值如何互换?
今天遇到一个数据表的两个列数据要互换,在网上找到并记录下. 直接用Sql就可以搞定,语法如下 --将数据表中两个列数据互换的语法-- update tabName set field1=field2, ...
- SQL笔记:SQL中的数据透视表
以下是在MySQL中通过SQL语句实现Excel中数据透视表/交叉表/二维表的功能.原理不作赘述,具体示例与代码如下: 1. 数据源预览 SELECT * FROM pivot_table; 2. 数 ...
- mysql 删除另一个表中的_mysql – 在一个查询SQL中删除两个表中的记录
我有两张桌子 EMPGROUP_TBL SEQID | MASTERID | BUSINESS_UNIT | DIVISION | SUB_DIVISION | CLASSIFICATION | SU ...
- SQL中永久的修改表的字段名字
永久修改字段名字,需要创建新表 原表: select *from sony_members; 短暂修改表的字段名字: select age as age2 from sony_members; 永久修 ...
- mysql多表查询连接的种类_MySQL中基本的多表连接查询教程
一.多表连接类型1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如: 由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE ...
最新文章
- Android常用URI收藏
- css/js压缩工具
- windows查看进程线程的命令pslist
- linux软链接的创建、删除和更新
- Kyoya and Photobooks
- MySQL中update修改数据与原数据相同会再次执行吗
- 爬虫-视频资源的爬取
- 乱谈卡巴CCTV黄金时段广告
- vmware tools 的安装(Read-only file system 的解决)
- 转载:获取数据库中的所有表 (C#实现)
- 18.docker top
- Masonry的使用
- OpenCV-图像处理(32、点多边形测试)
- 在IBM AIX p750小机上为Oracle扩展逻辑卷-视频分享
- 二、正确看待博弈论和经典理论的理论定位
- C++ 关于ShowWindow()的疑问
- 525、Java工程师的进阶之路 -【 RocketMQ (二)】 2022.01.06
- 计算机模拟仿真实例,计算机模拟仿真系统,computer simulation system,音标,读音,翻译,英文例句,英语词典...
- 如何整理碎片化的知识?
- PyautoGui常用教程(鼠标、键盘)
热门文章
- 芒果超媒上半年营收67亿:同比降15% 广告收入降31%
- linux查询内存、CPU、硬盘等系统信息的命令
- 分享82个HTML电子产品模板,总有一款适合您
- Windows(win)10安装JDK并配置环境变量(附网盘下载地址)
- three.js-线上运动的光效
- 360 se html document 广告,360浏览器弹窗广告如何关闭?教你彻底删除屏蔽360se.exe广告!...
- Angiopep-PEG-DSPE Angiopep聚乙二醇磷脂 Angiopep-PEG2000-DSPE
- Linux Vim插件管理器Vundle安装和使用
- 如何获取ul中的li的索引
- 在 JavaScript 如何下载文件