質問: お世話になっております。 SQLの<>について質問です。 以下のようなデータがある場合、 番号テーブル ID CD 1 1 2 1 3 NULL ``` select * from 番号テーブル where ID <> CD ``` で実行すると結果はID2のレコードのみが抽出されますか?
回答: 真が1件、偽が1件、どちらでもないものが1件で、1件ですね。 追記 Nullも含めてということなら、以下のように(IDとCDが共にNullの場合も含まれます) ``` select * from 番号テーブル where ID <> CD or ID is Null or CD is Null ``` COALESCE()を使用して、Nullを空文字同等に扱うなら以下のように。 ※但し、インデックスがあっても適用はされないので、その場合は上記より低速になるものと思われます。 ``` select * from 番号テーブル where coalesce(ID,'') <> coalesce(CD,'') ```