0

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 つの行を返しています

なんで?

4

1 に答える 1

2

あなたは基本的にあなた自身の質問に答えました。

「SET ANSI_NULLS ON」の場合:

  • オペランドの 1 つが null の場合、「関係演算子」+, <, >, <=, >=が「true」または「false」に評価されることはありません。

  • IS NULL一方、 は常に"true" (null の場合) または "false" (null でない場合) に評価されます。

詳細については、こちらをご覧ください。

于 2016-02-19T19:31:28.710 に答える