流传的说法是,Perl不是由规范定义的,而是由当前解释器版本碰巧接受的任何规范定义的。现在,让我们考虑一种SQL方言,比如TSQL。是否有已发布的规范允许创建与SQL Server中的验证器等效的验证器?像开源这样的验证器已经存在了吗?甲骨文也有同样的问题。
好的,所以对于MySQL,我猜验证器可以直接从MySQL代码库中提取出来。然而,他们是否真的发布了规范本身,以防我想要创建自己的验证器?
发布于 2012-06-25 12:42:57
您似乎对如何为MySQL做了一个想法。关于Oracle我真的不能说太多,除了它主要实现ANSI SQL和对SQL的PL/SQL过程语言扩展可以在Oracle9i的here中找到。
对于SQL Server:
Microsoft Books On Line (BOL)是官方的参考规范。但是,不同版本的SQL Server有不同的页面。有几个项目与此相关。http://www.sqlparser.com/ -有.NET、Java、COM和VCL版本,适用于Oracle、DB2、Mysql和SQL Server / Sybase (T-SQL)。价格也相当合理。
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标准。不过,你必须为这些标准的文档付费,而且它们并不便宜。
祝好运。
https://stackoverflow.com/questions/5187768
复制相似问题