[解決済み】NOT IN句の中のNULL値
2022-04-01 12:22:20
質問
この問題は、同じクエリだと思ったのにレコード数が異なる場合、1つのクエリで
not in
where
という制約があり、もう一方は
left join
. のテーブルは
not in
制約に 1 つの NULL 値 (不良データ) があったため、このクエリは 0 レコードのカウントを返しました。理由はなんとなくわかっているのですが、この概念を完全に理解するために、いくつかの助けを借りたいのです。
簡単に言うと、なぜクエリーAは結果を返し、Bは返さないのでしょうか?
A: select 'true' where 3 in (1, 2, 3, null)
B: select 'true' where 3 not in (1, 2, null)
これは、SQL Server 2005での話です。また
set ansi_nulls off
は、Bが結果を返すようになります。
どのように解決するのですか?
クエリAは
select 'true' where 3 = 1 or 3 = 2 or 3 = 3 or 3 = null
以降
3 = 3
が真であれば、結果を得ることができます。
クエリーBは、同じように
select 'true' where 3 <> 1 and 3 <> 2 and 3 <> null
いつ
ansi_nulls
がオンになっている。
3 <> null
はUNKNOWNなので、述語はUNKNOWNと評価され、行を取得することはできません。
いつ
ansi_nulls
がオフの場合。
3 <> null
が真であれば、述語は真と評価され、行を得ることができます。
関連
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] instanceofを呼び出す前にnullチェックは必要ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] Pythonでnullオブジェクトを参照する
-
[解決済み] カラムの変更:NULLをNOT NULLに変更する
-
[解決済み] SQLのIN句をパラメータ化する
-
[解決済み] NOT IN vs NOT EXISTS
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テーブルのFROM句の項目がない [終了しました] 。
-
[解決済み】ストアドプロシージャーのエラー ORA-06550
-
[解決済み] varchar 値 'simple, ' をデータ型 int に変換する際に変換に失敗しました。
-
[解決済み] INSERT ステートメントが FOREIGN KEY 制約と競合する - SQL Server
-
[解決済み] ORA-12801: 並列クエリサーバー P004 および ORA-01555 でシグナルされたエラー: スナップショットが古すぎる。
-
[解決済み] リンクされたサーバーの NULL に対して OLE DB プロバイダー Microsoft.Jet.OLEDB.4.0 のインスタンスを作成できません。
-
[解決済み] "このSqlTransactionは完了しました。もう使用できません。"...設定エラー?
-
[解決済み] varchar 値の変換で int カラムがオーバーフローしました。
-
[解決済み] 時間を時間単位や10分単位でグループ化する方法
-
[解決済み] SQLで複数のGROUP BYを使用する場合とは?