SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什麼意思 sql server 2005 2008

在sqlserver2005或SQL2008數據庫項目中,創建視圖或存儲過程的時候往往有以下開頭語句:


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

………………

………………

GO

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO

這些是 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 的行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章