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
そして、次の 1 つのレコードを挿入しました。
Insert Into [dbo].[tblStandard5columnCustomerDetails]
VALUES
(
1,
NULL,
NULL,
NULL,
NULL
);
Microsoftの記事によると、Selectステートメントを使用する場合、行を返すべきではありませんWHERE column_name = NULL
SET ANSI_NULLS が ON の場合、WHERE column_name = NULL を使用する SELECT ステートメントは、column_name に NULL 値があってもゼロ行を返します。WHERE column_name <> NULL を使用する SELECT ステートメントは、column_name に NULL 以外の値があっても 0 行を返します。
しかし、いつこのクエリを実行しますか
select FNAME From [dbo].[tblStandard5columnCustomerDetails] WHERE FName IS NULL
NULL の値を持つ 1 つの行を返しています
なんで?