设置ANSI NULLS ON

时间:2015-06-10 12:16:39

标签: sql sql-server sql-server-2008

SET ANSI NULLS ON和SET ANSI NULLS OFF之间有什么区别?

我理解运营商=和<>在提到SET ANSI NULLS ON时,where null与nulls比较的语句不返回任何值。作为最佳实践,我应该在程序中使用哪种陈述?为什么?

此致 菲利普

3 个答案:

答案 0 :(得分:2)

根据Microsoft的说法,最佳做法是 ANSI_NULLS始终开启

MSDN

  

在SQL Server的未来版本中,ANSI_NULLS将始终为ON和   任何明确将选项设置为OFF的应用程序都将生成   一个错误。避免在新的开发工作和计划​​中使用此功能   修改当前使用此功能的应用程序。

所以我从现在开始用ANSI NULL ON开始练习我的查询。

答案 1 :(得分:1)

SET ANSI NULLS ON指定与Equals (=)

一起使用的Not Equal To (<>)null values比较运算符的 ISO兼容行为

关键点:由于设置ANSI NULLS主要处理数据库的ATOMICITY,您应该设置ANSI ANSI_NULLS ON

Read "ATOMIC WITH" block in this link

答案 2 :(得分:0)

正如documentation所述:

  

在SQL Server的未来版本中,ANSI_NULLS将始终为ON和   任何明确将选项设置为OFF的应用程序都将生成   一个错误。避免在新的开发工作和计划​​中使用此功能   修改当前使用此功能的应用程序。

ON是默认值,与其他数据库兼容。除非你有一个非常非常好的理由,否则不要打扰它。