在sqlserver2005或SQL2008數據庫項目中,創建視圖或存儲過程的時候往往有以下開頭語句:
這些是 SQL-92 設置語句,使 SQL Server 2000/2005 遵從 SQL-92 規則。
當 SET QUOTED_IDENTIFIER 爲 ON 時,標識符可以由雙引號分隔,而文字必須由單引號分隔。比如:select "nameId",[nameId] from username,nameId做爲標識符返回該字段的值。
當 SET QUOTED_IDENTIFIER 爲 OFF 時,標識符不可加引號,且必須符合所有 Transact-SQL 標識符規則,比如:select "nameId" from username,nameId做爲文字返回該值。
SQL-92 標準要求在對空值進行等於 (=) 或不等於 (<>) 比較時取值爲 FALSE。當 SET ANSI_NULLS 爲 ON 時,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 語句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 語句仍會返回零行。
當 SET ANSI_NULLS 爲 OFF 時,等於 (=) 和不等於 (<>) 比較運算符不遵從 SQL-92 標準。使用 WHERE column_name = NULL 的 SELECT 語句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 語句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 語句返回所有不爲 XYZ_value 也不爲 NULL 的行。