他の質問here on SOとgoogleは、MS Sql ServerがWHERE句の式を短絡することを保証していないようです。SQLはWHERE CLAUSEのORの評価を短絡しますか?
これは、このようなWHERE式が動作することを信頼できないということですか?
... WHERE (@include_voided = 1 OR mytable.void = 0) AND ...
私は頻繁にこの種の表現をストアドプロシージャで使用します。記事のすべてのように、これはと交換する必要がある場合、私は今疑問に思って別の理由...
... WHERE mytable.void = case when @include_voided=1 then mytable.void else 0 END
...のための短絡を研究したが、そのCASE文は、短期保証する唯一のものであることを示すように見えます回路。
私は最初の式が読みやすく、入力しやすいという理由だけでうまくいくことを期待しています。
Btwでは、 '@include_voided = NULL'の結果が違うでしょう。また、これらの検索条件をsargableにすることはできません(つまり、ここでインデックスを検索する方法はありません)ので、書きやすい方を使用してください。 – wqw