Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server T-SQL:确保表达式在WHERE语句中的求值顺序_Sql Server_Tsql_Where Clause - Fatal编程技术网

Sql server T-SQL:确保表达式在WHERE语句中的求值顺序

Sql server T-SQL:确保表达式在WHERE语句中的求值顺序,sql-server,tsql,where-clause,Sql Server,Tsql,Where Clause,我相信有人能很快帮我解决这个问题。我肯定我不是第一个问这个问题的人,但我还没有发现任何类似的问题 具有以下WHERE语句: WHERE boolean_expression1 OR boolean_expression2 OR subquery_count > 0 是这样执行的吗 如果(布尔表达式1=true)->使用true退出 else if(布尔表达式2=true)->使用true退出 else->执行子查询 我的意思是:子查询是否仅在前面的表达式都为false时执行? 如果没

我相信有人能很快帮我解决这个问题。我肯定我不是第一个问这个问题的人,但我还没有发现任何类似的问题

具有以下WHERE语句:

WHERE boolean_expression1 OR boolean_expression2 OR subquery_count > 0
是这样执行的吗

  • 如果(布尔表达式1=true)->使用true退出
  • else if(布尔表达式2=true)->使用true退出
  • else->执行子查询
我的意思是:子查询是否仅在前面的表达式都为false时执行? 如果没有,我有什么办法可以保证吗

因为在我的例子中,子查询可能非常昂贵

Thx提前,
Chris

SQL Server没有对计算顺序做出任何承诺,您也不能强制执行任何顺序。CASE WHEN表达式如何?您能想象一个用于此或示例的语句吗:WHERE(@GlobalSearch=1或@SomeCount=0或(子查询)>=@SomeCount)检查执行计划。
WHERE case when boolean_expression1 then 1
else case when boolean_expression2 then 1
else when subquery_count > 0 then 1 end = 1