package com.wzw.demo.utils;
import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.expression.*;
import net.sf.jsqlparser.parser.CCJSqlParserManager;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.parser.SimpleNode;
import net.sf.jsqlparser.schema.Column;
import net.sf.jsqlparser.schema.Table;
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.alter.Alter;
import net.sf.jsqlparser.statement.create.index.CreateIndex;
import net.sf.jsqlparser.statement.create.table.CreateTable;
import net.sf.jsqlparser.statement.create.view.CreateView;
import net.sf.jsqlparser.statement.delete.Delete;
import net.sf.jsqlparser.statement.drop.Drop;
import net.sf.jsqlparser.statement.execute.Execute;
import net.sf.jsqlparser.statement.insert.Insert;
import net.sf.jsqlparser.statement.merge.Merge;
import net.sf.jsqlparser.statement.replace.Replace;
import net.sf.jsqlparser.statement.select.*;
import net.sf.jsqlparser.statement.truncate.Truncate;
import net.sf.jsqlparser.statement.update.Update;
import net.sf.jsqlparser.statement.upsert.Upsert;
import net.sf.jsqlparser.util.TablesNamesFinder;
import org.apache.calcite.avatica.SqlType;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @description: jsqlparser解析SQL工具类
* PlainSelect类不支持union、union all等请使用SetOperationList接口
* @author: ZhiWen
* @create: 2021-02-23
**/
public class SqlParserTool {
/**
* 由于jsqlparser没有获取SQL类型的原始工具,并且在下面操作时需要知道SQL类型,所以编写此工具方法
*
* @param sql sql语句
* @return sql类型,
* @throws JSQLParserException
*/
public static SqlType getSqlType(String sql) throws JSQLParserException {
Statement sqlStmt = CCJSqlParserUtil.parse(new StringReader(sql));
if (sqlStmt instanceof Alter) {
return SqlType.ALTER;
} else if (sqlStmt instanceof CreateIndex) {
return SqlType.CREATEINDEX;
} else if (sqlStmt instanceof CreateTable) {
return SqlType.CREATETABLE;
} else if (sqlStmt instanceof CreateView) {
return SqlType.CREATEVIEW;
} else if (sqlStmt instanceof Delete
SQL解析之获取select语句中的列名别名
最新推荐文章于 2025-03-29 19:55:22 发布