Durid解析SQL语句

ops/2024/10/21 6:28:01/

在外面的需求中,有很多需要解析SQL语句的地方,我们采用Durid来进行解析。
Durid可以将sql进行详细的拆分成多个部分

  • 解析where
  • 解析SQLSelectItem
  • 解析update语句
  • 解析limit
  • 解析group by
    还可以动态修改sql,比如在原sql
  • 增加条件
  • 修改sql运行的值

Visitor模式
所有的AST节点都支持Visitor模式
可以利用访问者模式获取一些信息

// 生成语法树
String sql = "select * from user";
SQLSelectStatement statement = parse(sql);
// 访问并解析
MyVisitor visitor = new MyVisitor;
statement.accept(visitor);
// 获取结果
visitor.getSelectColumns();
visitor.getParameters();

http://www.ppmy.cn/ops/103608.html

相关文章

MFC工控项目实例之十添加系统测试对话框

承接专栏《MFC工控项目实例之九选择下拉菜单主界面文本框显示菜单名》 参考前期我的博客文章《MFC3d立体按钮制作》 这里只给出相关代码 1、在SysTest.h文件中添加代码 #include "ShadeButtonST.h" #include "BtnST.h" class CSysTest : public CDialog {…

RISC-V汇编实现矩阵阶乘

1) 源代码 long long fact(long long n) {if (n < 1) return 1;else return (n*fact(n - 1)); } 2) 汇编代码 fact:addi sp, sp, -16 // adjust stack for 2 itemssd x1, 8(sp) // save the return addresssd x10, 0(sp) // save the argumen…

Unity编辑器扩展之Scene视图扩展

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity编辑器扩展之Scene视图扩展 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&#xff01; …

前端 数值列 禁止输入多个小数点

问题来源&#xff1a;测试输入时误输入两个小数点时&#xff0c;会出现NAN显示 问题解决&#xff1a;编写 一个 JavaScript 函数来检查和处理字符串中的小数点数量 示例代码&#xff1a; 定义一个函数&#xff0c;接收用户输入的字符串。检查字符串中是否包含超过一个小数点。…

mysql 一主一从数据库的配置文件

MySQL一主一从的配置主要涉及到主服务器&#xff08;Master&#xff09;和从服务器&#xff08;Slave&#xff09;的配置文件&#xff0c;通常是my.cnf或my.ini&#xff0c;具体配置如下&#xff1a; ### 主服务器&#xff08;Master&#xff09;配置&#xff1a; 1. **serve…

算法的时间复杂度

一.实例&#xff1a; 1.用算法表白&#xff1a;“爱你n遍”。 #include<stdio.h> ​ //算法1&#xff1a;逐步递增型爱你 void loveYou(int n) //n为问题规模 {int i1; //爱你的程度 --> 设为语句1 while(i<n) //设为语句2 {i; //设为语句3 printf("I lov…

C++判断语句(基础速通)ac-wing

倍数 #include <iostream> using namespace std; int a, b; int main() {cin >> a >> b;if (a % b 0 || b % a 0) cout << "Sao Multiplos";else cout << "Nao sao Multiplos";return 0; }零食 #include <iostream>…

hive学习(五)

一、hive的DML操作 1.load&#xff08;向表中装载数据&#xff09; hive> load data [local] inpath 路径 [overwrite] into table 表名 [partition (partcol1val1,…)];特殊说明 1&#xff09;local&#xff1a;标识从本地加载数据到Hive表&#xff0c;若没有local的话从…