在像C#这样的编程语言中,java如果一个条件有AND(&&&)运算符的多个表达式,那么只有当第一个表达式为真时才会计算第二个表达式。
在TSQL中怎么样?具体来说,这是Microsoft Sql server中存储过程中的一个条件。
IF (exprA AND exprB)
在上述条件下,如果exprA为false,那么exprB是否会被评估?
答案 0 :(得分:2)
如果第一个表达式为false,则不能依赖SQL Server来评估第二个表达式。请参阅我在评论中与Martin联系的question的答案。
答案 1 :(得分:1)
正如其他人所说,这取决于你的IF条件。但是,如果您只使用简单表达式,它将会短路。运行以下命令,您将看到第二个表达式中的除零错误永远不会发生:
IF (1 = 0 AND (1/0) = 0)
BEGIN
PRINT 'test1'
END
ELSE
BEGIN
PRINT 'test2'
END
答案 2 :(得分:0)
CASE
语句似乎允许短路,如下例所示:
-- Conditional Query
select case when 1>0 and 1/0>0 then 1 else 0 end
-- Short Circuited Conditional Query
select case when -1>0 and 1/0>0 then 1 else 0 end
答案 3 :(得分:0)
create proc ABCDemo1
(
@Name varchar(50),
@date varchar(50)
)
as begin
if(@Name!='' and @date='')
begin
select * from Table1 where condition1
end
else if(@Name='' and @date!='')
begin
select * from Table2 where condition2
end
else if(@Name!='' and @date!='')
begin
select * from Table3 where condition3
end
end