好的,对于MySQL,我猜测验证器可以直接从MySQL代码库中提取出来。然而,如果我想制作自己的验证器,他们实际上是否发布了规范本身?
答案 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标准。 你必须为这些标准的文件付费,但它们并不便宜。
祝你好运。