SQL Server中的ANSI_NULLS标志?

Roy*_*mir 2 t-sql sql-server sql-server-2005

我可以SET ANSI_NULLS通过使用SET ANSI_NULLS OFF或更改值SET ANSI_NULLS ON

Question #1 我怎样才能获得当前值?

Question #2 设置值是否应用于查询?表?实例?整个db?

Question #3如果我正在进入一家公司,if myNullParam <>null我应该检查哪些地方(db?schema?query?)告诉他们 - 这会起作用,还是不行

谢谢.

dpw*_*dpw 6

  1. select databasepropertyex('MyDatabaseName', 'IsAnsiNullsEnabled')会告诉你数据库的默认值.Hitesh的回答将告诉你当前会话的价值.
  2. 数据库具有默认设置,每个会话都可以覆盖数据库默认值.
  3. 会话值.但是,MSDN文档说For a script to work as intended, regardless of the ANSI_NULLS database option or the setting of SET ANSI_NULLS, use IS NULL and IS NOT NULL in comparisons that might contain null values. 虽然它可能有效,但它肯定会违反最佳实践.


Hit*_*tel 5

答案1

您可以运行以下查询来获取 ANSI_NULLS 是否已设置。

DECLARE @options INT
SELECT @options = @@OPTIONS
IF ( (32 & @options) = 32 ) PRINT 'ANSI_NULLS'
Run Code Online (Sandbox Code Playgroud)

如果打印ANSI_NULLSANSI_NULLS设置或未设置。

您可以在这里找到更多帮助http://www.mssqltips.com/sqlservertip/1415/metry-set-options-for-a-current-session-in-sql-server/