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

时间:2011-03-03 23:09:07

标签: sql validation parsing dialect

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

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

1 个答案:

答案 0 :(得分:1)

您似乎知道如何为MySQL做些什么。除了主要实现ANSI SQL以及SQL的PL / SQL过程语言扩展(主要为Oracle 9i发现here)之外,我对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-written-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标准。 你必须为这些标准的文件付费,但它们并不便宜。

祝你好运。