由于以下代码打印了“第一”和“第二”插入该顺序,我可以得出结论,满足的第一个条件总是执行吗?
DECLARE @Constant1 int = 1
DECLARE @Constant2 int = 2
select
case
when @Constant1 = 1
then 'First'
when @Constant1 = 1 and @Constant2 = 2
then 'Second'
end as Result
select
case
when @Constant1 = 1 and @Constant2 = 2
then 'Second'
when @Constant1 = 1
then 'First'
end as Result
我知道有时并行处理会影响结果,我试图了解我在生产中看到的这种情况是否总是返回相同的结果。
此问题旨在了解生产代码中是否存在潜在问题。如果我要重新编写代码,我想我会尝试使代码明确互斥。
select
case
when @Constant1 = 1 and @Constant2 != 2
then 'First'
when @Constant1 = 1 and @Constant2 = 2
then 'Second'
end as Result