1. ホーム
  2. sql

[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由

2022-03-02 02:35:20

質問

SQLサーバーで nullParam=NULL を指定した場合、常に false と評価されます。これは直感に反しており、私は多くのエラーを引き起こしてきました。私は IS NULLIS NOT NULL キーワードは正しい方法です。しかし、なぜSQLサーバーはこのような挙動をするのでしょうか?

解決方法は?

nullはこの場合、"unknown"(または"doesn't exist")と考えてください。 どちらの場合も、どちらの値もわからないのですから、等しいとは言えません。 つまり、null=nullはtrueではない(falseまたはnull、システムによって異なる)と評価されるのです。 この動作は、ANSI SQL-92標準に定義されています。

EDIT これは、あなたの ansi_nulls ANSI_NULLSがオフの場合、これはtrueと評価されます。 例として、以下のコードを実行してみてください。

set ansi_nulls off

if null = null
    print 'true'
else
    print 'false'


set ansi_nulls ON

if null = null
    print 'true'
else
    print 'false'