【发布时间】:2016-02-19 19:22:58
【问题描述】:
我有下表,其中 SET ANSI_NULL 设置为 ON
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tblStandard5columnCustomerDetails]
(
[Id] [int] NOT NULL,
[FName] [varchar](60) NULL,
[Address] [varchar](50) NULL,
[PhoneNumber] [varchar](11) NULL,
[LName] [varchar](60) NULL
) ON [PRIMARY]
GO
并插入以下一条记录:
Insert Into [dbo].[tblStandard5columnCustomerDetails]
VALUES
(
1,
NULL,
NULL,
NULL,
NULL
);
根据 Microsoft 文章,当使用带有 WHERE column_name = NULL 的 Select 语句时,我不应该返回任何行
当 SET ANSI_NULLS 为 ON 时,使用 WHERE 的 SELECT 语句 column_name = NULL 即使有空值也返回零行 列名。使用 WHERE column_name NULL 的 SELECT 语句 即使 column_name 中有非空值,也返回零行。
但是什么时候执行这个查询
select FNAME From [dbo].[tblStandard5columnCustomerDetails] WHERE FName IS NULL
我返回一行值为 NULL
为什么?
【问题讨论】:
标签: sql ansi-nulls