SQL Server 2000如何在case语句中形成一个案例?

时间:2011-05-02 23:19:26

标签: sql-server sql-server-2000

是否可以在案例中包含案例陈述,当时为真,然后是陈述?

case when true then 
   case when false then 'test0'
   else 'test1'
   end
else
    case when false then 'test2'
    else 'test3'
    end
end

请注意确定将结束语句放在何处?

3 个答案:

答案 0 :(得分:4)

绝对。 Case表达式不知道它嵌入在另一个case表达式中。每个Case表达式都需要一个End关键字:

Select Case
        When Foo = Bar Then 'Test0'
        Else Case
                When Gamma = Theta Then 'Test1'
                End
        End

另一种方法是简单地堆叠表达式

Select Case
        When Foo = Bar Then 'Test0'
        When Gamma = Theta Then 'Test1'
        Else 'Blah'
        End

当像这样堆叠时,表达式按照它们被写入的顺序执行,直到一个当表达式求值为true时(即,你得到其中一个Then表达式)。

答案 1 :(得分:1)

使用括号或缩进(或两者)可能会很好,因此很明显case与哪个end有关。

case when true then 
  (  case when false then 'test0'
     else 'test1'
     end
  ) 
else
  ( case when false then 'test2'
    else 'test3'
    end
  )
end

答案 2 :(得分:1)

您的代码看起来很不错。因为解释器能够理解嵌入,所以可以将End End放在一起。