侃侃無(wú)極
2019-06-24 09:23:47
是否評(píng)估SQLWHERE子句短路?例如:SELECT * FROM Table t
WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key)如果@key為空計(jì)算為真,是@key不為空,@key=t.Key評(píng)估?如果沒(méi)有,為什么不呢?如果是的話(huà),有保證嗎?它是ANSI SQL的一部分還是特定于數(shù)據(jù)庫(kù)的?如果數(shù)據(jù)庫(kù)特定,SQLSERVER?甲骨文?MySQL?參考資料:短路評(píng)估
3 回答

FFIVE
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
6.3.3.3規(guī)則評(píng)估令 [...]
如果優(yōu)先級(jí)不是由格式或括號(hào)決定的,則表達(dá)式的有效計(jì)算通常從左到右執(zhí)行。然而,它是 執(zhí)行情況-取決于表達(dá)式是否實(shí)際從左到右計(jì)算,特別是當(dāng)操作數(shù)或運(yùn)算符可能引發(fā)條件時(shí)。 或者,如果不完全計(jì)算表達(dá)式的所有部分,就可以確定表達(dá)式的結(jié)果。

森欄
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
Where Case when Expr1 then Expr2 else Expr3 end = desiredResult
Expr1
Expr2
Expr3
添加回答
舉報(bào)
0/150
提交
取消