DECLARE @a int
SET @a = 5
SET @a = CASE
WHEN @a >= 5 THEN 1
WHEN @a <= 5 THEN 2
WHEN a < 10 THEN 3
END
SELECT @a
@a
的值应为3,但为什么显示为1?
任何人都可以解释它的工作原理吗?
有人问过我SQL访谈中的一个问题
答案 0 :(得分:0)
Case
表达式将按照您指定的顺序求值:
因此,您想优先使用when
子句:
case when @a < 10 then 3
when @a <= 5 then 2
when @a >= 5 then 1
end
答案 1 :(得分:0)
CASE语句通过条件,并在满足第一个条件时返回值。以下两种方法可以解决您的问题,您可以尝试其中一种。
declare @a int
set @a=5
set @a= case when @a>5 then 1
when @a<5 then 2
when @a <10 then 3 end
select @a
set @a=5
set @a= case when @a <10 then 3
when @a>=5 then 1
when @a<=5 then 2 end
select @a