當 SET ANSI_NULLS 是 OFF 時,等於 (=) 和不等於 (<>) 比較運算子並不遵照 ISO 標準。
當 SET ANSI_NULLS 是 ON 時,使用 WHERE column_name = NULL 的 SELECT 陳述式會傳回零個資料列,即使 column_name 含有 Null 值,也是如此。使用 WHERE column_name <> NULL 的 SELECT 陳述式也會傳回零個資料列,即使 column_name 含有非 Null 值,也是如此。在將來的 SQL Server 版本中,ANSI_NULLS 一定會是 ON,而且明確將此選項設定為 OFF 的應用程式將會產生錯誤。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。
CREATE TABLE [dbo].[myEmployees]( [EmployeeID] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](10) NOT NULL, [Title] [nvarchar](30) NULL, Sales INT NULL, ) insert into myEmployees values ('Nancy','Sales Representative',100), ('Andrew','Sales Manager',200), ('Janet','Sales Representative',300), ('Margaret','Sales Representative',400), ('Sandy',NULL,500)
PRINT 'Testing default setting' SELECT * FROM myEmployees WHERE Title=NULL SELECT * FROM myEmployees WHERE Title<>NULL SELECT * FROM myEmployees WHERE Title IS NULL
PRINT 'Testing ANSI_NULLS ON' SET ANSI_NULLS ON SELECT * FROM myEmployees WHERE Title=NULL SELECT * FROM myEmployees WHERE Title<>NULL SELECT * FROM myEmployees WHERE Title IS NULL
PRINT 'Testing SET ANSI_NULLS OFF' SET ANSI_NULLS OFF SELECT * FROM myEmployees WHERE Title=NULL SELECT * FROM myEmployees WHERE Title<>NULL SELECT * FROM myEmployees WHERE Title IS NULL
參考線上說明:http://msdn.microsoft.com/zh-tw/library/ms188048.aspx
其他參考:德瑞克學習筆記:T-SQL認識IS NULL函數
全站熱搜
留言列表