sql-server - SQL Server 中的 OR 运算符短路

标签 sql-server tsql query-optimization short-circuiting

我想咨询SQL Server OR短路

代码:

DECLARE @tempTable table
    (
        id int
    )
INSERT @tempTable(id) values(1)
      
DECLARE @id varchar(10)
SET @id = 'x'
SELECT * FROM @tempTable WHERE 1=1 OR id = @id --successfully
SELECT * FROM @tempTable WHERE @id = 'x' OR id = @id --Exception not Convert 'x' to int
为什么? 1=1@id='x'true

SQL Server OR运算符:是否有短路功能?

谢谢

最佳答案

在 SQL 中,不要求 OR 子句提前中断。换句话说,由优化器决定是否同时检查这两个条件。我不是 MSSQL 优化器方面的专家,但我见过优化器有或没有短路 OR 子句的实例。

关于sql-server - SQL Server 中的 OR 运算符短路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11219791/

相关文章:

sql - 如何在没有 SQL Server Management Studio 的情况下创建新的 SQL Server 2012 登录名?

c# - 违反 PRIMARY KEY 约束。无法在对象中插入重复键 - ADO.NET

c# - 字符串或二进制数据将在 Varbinary(MAX) 中被截断

tsql - 我可以使用 Order by 对存储过程结果进行排序吗?

mysql - 这不应该使用索引而不是 where 吗?

sql - 在 View 中使用带有 SQL 函数的联接

sql - SQL Server 中的 DATALENGTH VARCHAR

sql - 选择表中除第一个行之外的行

mysql - JOIN 查询与多个查询

mysql - 轮换用户统计数据