T-SQL:确保WHERE语句中的表达式评估顺序

时间:2013-06-14 08:35:00

标签: sql-server tsql where-clause

我相信有人可以快速解决这个问题。我确定我不是第一个提出这个问题的人,但我还没有找到类似的东西。

具有以下WHERE语句:

WHERE boolean_expression1 OR boolean_expression2 OR subquery_count > 0

这是以这种方式执行的吗?:

  • if(boolean_expression1 = true) - >退出并使用true
  • else if(boolean_expression2 = true) - >退出并使用true
  • 其他 - >执行子查询?

我的意思是:如果前面的表达式都是假的,那么子查询是否只被执行? 如果没有,有什么方法可以确保这个吗?

因为在我的情况下子查询可能相当昂贵。

提前, 克里斯

1 个答案:

答案 0 :(得分:0)

WHERE case when boolean_expression1 then 1
else case when boolean_expression2 then 1
else when subquery_count > 0 then 1 end = 1