@value が null の場合、WHERE 句は次のようになります。
WHERE (Column = @value OR @value is null)
に減少します
WHERE (Column = @value OR 1=1)
(これはif (Column == value || true)
他の一般的な言語と同様です)
オペランド (辺) のいずれかが真の場合、OR 結合は真です。SQL は 3 つの値を持つ論理を使用します。
+---------+------+---------+---------+
| A OR B | TRUE | Unknown | FALSE |
+---------+------+---------+---------+
| TRUE | TRUE | TRUE | TRUE |
| Unknown | TRUE | Unknown | Unknown |
| FALSE | TRUE | Unknown | FALSE |
+---------+------+---------+---------+
など:
- @value が null の場合、WHERE 句の右側が true になるため、条件全体が true になり、WHERE 句は常に満たされます。
- @valueがnull でない場合、WHERE 句の右側が false であり、WHERE 句が満たされるかどうかは
Column = @value
.