當 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函數
文章標籤
全站熱搜
