需要一个 sql 语法解析器

查看 72|回复 7
作者:Corybyte   
wenmin92   
GPT 不行?
dzdh   
https://github.com/pingcap/tidb/tree/master/pkg/parser
tool2d   
我把普通 sql ,用文本二次翻译成编程能识别的语言,比如 C ,比如 JAVA 。就很好动态解析了,扔进现有的库就行。
misaka19000   
antlr4 做编译处理
ThinkCat   
pincap 的 tidb 里面有这个,解析 sql 的,楼上有 go 版本的,我用的是 rust 版本:sqlparser
Corybyte
OP
  
@ThinkCat 不太行
```
SELECT C.cno FROM C WHERE C.cno not in (SELECT DISTINCT SC.cno FROM S INNER JOIN SC ON S.sno=SC.sno WHERE S.sname=张三);
```
生成的 ast 树为
Corybyte
OP
  
@Corybyte
```
&{{{{ SELECT C.cno FROM C WHERE C.cno not in (SELECT DISTINCT SC.cno FROM S INNER JOIN SC ON S.sno=SC.sno WHERE S.sname=张三); 0}}} 0xc000240390 false 0xc00017e300 0xc0002100c0 0xc0002403c0   []    [] false false 0   0 [] }
```
而我想拿到的结果为
```
SELECT C.cno FROM
SELECT DISTINCT SC.cno FROM S INNER JOIN SC ON S.sno=SC.sno WHERE S.sname=张三
```
您需要登录后才可以回帖 登录 | 立即注册

返回顶部