是否有任何SQL验证程序可以检查多个数据库服务器的语法?
例如,我可能想检查特定查询是否适用于Oracle,MySQL和SQL Server。
我更关心SQL语法而不是被查询的实际模式,因此可以捕获主要语法错误的工具,例如检测到SQL Server和Oracle中不支持limit
子句就足够了
修改
有几个答案建议检查特定DBMS或ANSI标准的语法。
我正在寻找在两个或更多数据库(比如SQL Server和Oracle)之间定位某种功能联合的可能性。我希望能够使用我在特定应用程序中定位的所有DBMS支持的任何SQL功能。
我不确定这是否值得。我认为这取决于几个数据库共享的非ANSI功能的数量。如果只有极少数,那么最好是以ANSI标准为目标。
答案 0 :(得分:7)
我不知道有什么特别的,这些将检查这些陈述是否有效ansi 92/99/2003 ...
http://developer.mimer.com/validator/index.htm
这将使你获得99%的胜利(特别是如果只进行CRUD操作)
也许如果您知道哪个保留字被哪个数据库使用,您可以使用自己的简单检查器。 见:How to find if a column name is a reserved keyword across various databases
(如前所述)如果您的目标是创建一个与数据库无关的系统,请考虑使用第三方工具,例如:entityspaces
答案 1 :(得分:2)
从SQL Server的角度来看,您可以检查语法"for compliance with the FIPS 127-2 standard. This is based on the ISO standard.",而不是检查多个数据库服务器的sql语法。
示例:
SET FIPS_FLAGGER 'INTERMEDIATE'
答案 2 :(得分:2)
对于MySQL:在automatic SQL syntax check中尝试dbForge Studio for MySQL功能。
中的Oracle:PL / SQL编辑器答案 3 :(得分:0)
这是一个在线mysql语法检查程序,但这只是mysql http://www.piliapp.com/mysql-syntax-check/