是否评估SQLWHERE子句短路?例如:SELECT * FROM Table t
WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key)如果@key为空计算为真,是@key不为空,@key=t.Key评估?如果没有,为什么不呢?如果是的话,有保证吗?它是ANSI SQL的一部分还是特定于数据库的?如果数据库特定,SQLSERVER?甲骨文?MySQL?参考资料:短路评估
3 回答
FFIVE
TA贡献1797条经验 获得超6个赞
6.3.3.3规则评估令 [...]
如果优先级不是由格式或括号决定的,则表达式的有效计算通常从左到右执行。然而,它是 执行情况-取决于表达式是否实际从左到右计算,特别是当操作数或运算符可能引发条件时。 或者,如果不完全计算表达式的所有部分,就可以确定表达式的结果。
森栏
TA贡献1810条经验 获得超5个赞
Where Case when Expr1 then Expr2 else Expr3 end = desiredResult
Expr1
Expr2
Expr3
添加回答
举报
0/150
提交
取消