我们可以在sql中的变量中设置多个值吗

时间:2020-03-01 09:43:05

标签: sql sql-server

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访谈中的一个问题

2 个答案:

答案 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