SQL Server Express是否符合ANSI标准?

时间:2009-11-11 01:26:36

标签: sql-server sql-server-express

您可以在SQL Server Express 2005或2008中运行ANSI SQL语句吗?

3 个答案:

答案 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功能:

  • 没有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没有那么多),所以请使用它们。