SQL WHERE句は短絡的に評価されますか? 質問する

SQL WHERE句は短絡的に評価されますか? 質問する

SQL WHERE句のブール式です短絡評価?

例えば:

SELECT * 
FROM Table t 
WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key) 

@key IS NULLが に評価される場合true、 は@key IS NOT NULL AND @key = t.Key評価されますか?

いいえの場合、その理由は何ですか?

はいの場合、それは保証されていますか? それは ANSI SQL の一部ですか、それともデータベース固有のものですか?

データベース固有の場合、SQLServer? Oracle? MySQL?

ベストアンサー1

ANSI SQL ドラフト 2003 5WD-01-Framework-2003-09.pdf

6.3.3.3 ルールの評価順序

[...]

優先順位がフォーマットや括弧によって決定されていない場合、式の有効な評価は一般的に左から右に実行されます。ただし、実装依存式が実際に左から右に評価されるかどうか、特にオペランドや演算子によって条件が発生する可能性がある場合または、式のすべての部分を完全に評価しなくても式の結果を決定できる場合。

おすすめ記事