3

是否像 vb 一样进行“或”比较工作。我的意思是如果他检查每一个或者如果第一个是假的

喜欢

DECLARE @var1 bit;
SET @var1=1
DECLARE @var2 bit;
SET @var2=1

(@var1=1 or @var2=1)
AND ...

所以,@var 等于 1,我们不需要检查 var2,但是 sql server 会做检查吗?

它关于查询的优化(和服务器的内存)

保护你

4

2 回答 2

2

在大多数情况下,是的,SQL Server 确实对 AND 和 OR 语句使用短路,但有时操作不会按照您期望的顺序发生。这很容易通过以下方式进行测试:

SELECT '"Divide By Zero" error' AS [test] WHERE (1 / 0 = 1)

SELECT 'NO "Divide By Zero" error' AS [test] WHERE (1 = 1) OR (1 / 0 = 1)

您可以在这里找到更深入的分析,作者 Gianluca Sartori:http ://www.sqlservercentral.com/articles/T-SQL/71950/

于 2012-04-22T05:33:42.967 回答
0

微软连接

感谢您的反馈意见。我们今天在 SQL Server 中支持的逻辑运算符是 ANSI SQL 标准中指定的,并且几乎每个数据库系统都支持这些逻辑运算符。我们不打算扩展它来支持更多非常规的逻辑运算符。如果要有条件地评估表达式,请在 SQL Server 中使用 CASE 表达式,例如:

where case when then (select 1 where ) when then (select 2 where ) ... end = 1

CASE 表达式保证按顺序计算 WHEN/THEN 子句。

于 2012-04-20T03:21:12.627 回答