您可以在SQL Server Express 2005或2008中运行ANSI SQL语句吗?
答案 0 :(得分:3)
Sql Server了解Ansi Sql。然而,对标准总是有不同的解释。我发现这篇文章列出了一些差异:Think ANSI Standard SQL Is Fully Portable Between Databases? Think Again.
答案 1 :(得分:1)
如果您只为产品使用SQL Server后端,请忘记ANSII sql,T-SQL提供了更有效和更有效的查询SQL Server数据库的方法。如果你必须拥有多个后端,ANSII就可以了,但如果不这样做,那么将自己限制在效率最低的代码是愚蠢的。对于任何数据库后端都是如此,该数据库的专有语言设计为比其他任何东西都更好。
但是在回答你的问题时,是的,一些ANSII标准是有效的,有些则没有。对于任何基本的查询,你可能没问题,这是复杂的东西,往往真正指出差异。所以基本上你无法完全测试它。无论如何你应该做什么。
答案 2 :(得分:1)
它仅部分符合ANSI标准。最大的区别是字符串连接运算符,它应该是||
,但在SQL Server中是+
。
此外,根据当前数据库的排序规则,它可能不符合标准要求的区分大小写规则。
其他(我认为必需)缺少的ANSI功能:
DATE '2012-08-28'
,TIMESTAMP '2012-08-28 17:33:05'
)VALUES
(在INSERT
子句之外)(col1, col2) = (1,2)
NULLS FIRST/LAST
选项ORDER BY
大多数缺少的功能在T-SQL中都有一些非标准的等价物。
SQL标准是一件好事,如果我在两个SQL结构之间做出选择,我会选择非标准的标准结构。
但是编写独立于DBMS的应用程序根本不可行(好) - 至少不适用于非平凡的应用程序。
如果它真的是DBMS独立的,那只意味着它在所有DBMS上同样会很慢。
您为所有SQL Server功能支付了大量现金(或者对SQL Server Express没有那么多),所以请使用它们。