有主要SQL方言(TSQL,Oracle,MySQL)的开源验证解析器吗?或者至少是这些方言的精确规格?

End*_*ies 5 sql validation parsing dialect

街上的一句话是Perl不是由规范定义的,而是由当前的解释器版本接受的定义.现在,让我们考虑像TSQL这样的SQL方言.是否有一个已发布的规范,可以使验证器等同于SQL Server内部的验证器?是否已经存在这样的验证器作为开源?和Oracle一样的问题.

好吧,对MySQL来说,我猜测验证器可以直接从MySQL代码库中提取出来.然而,他们实际上是否发布了规范本身,以防我想制作自己的验证器?

Dav*_*vos 1

您似乎知道要为 MySQL 做什么。除了 Oracle 主要实现 ANSI SQL 以及 SQL 的 PL/SQL 过程语言扩展大部分可以Oracle 9i 中找到之外,我对 Oracle 真的不能说太多。

对于 SQL Server:

Microsoft Books On Line (BOL) 是官方参考规范。但是,不同版本的 SQL Server 有不同的页面。有几个与此相关的项目。 http://www.sqlparser.com/ - 提供适用于 Oracle、DB2、Mysql 和 SQL Server / Sybase (T-SQL) 的 .NET、Java、COM 和 VCL 版本。价格也相当合理。

http://www.codeproject.com/Articles/1136/SharpHSQL-An-SQL-engine-writing-in-C (c#)

http://antlr.org/ - 这看起来是一个不错的选择。

我经常使用这个网站来格式化 SQL,但它也做了一些验证,尽管它相当粗糙: http: //www.dpriver.com/pp/sqlformat.htm

这是一个类似的网站: http ://www.tsqltidy.com/

我建议为 SQL 编写验证器,即使只是其中一种变体也是一项艰巨的任务。您可以查看 ANSI SQL 的各种 ISO/IEC 标准。ANSI SQL-92 得到了非常广泛的实施,但也有一个 SQL:2008 标准。不过,您必须为这些标准的文档付费,而且它们并不便宜。

祝你好运。