2011-05-02 92 views
1

如果真的那麼陳述,是否有可能在案件中有案件陳述?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 

注意確定在哪裏放置結束語句?

+0

是的。只要你確保在每個case語句之後放置一個'end'。 – AlexanderMP 2011-05-02 23:22:32

回答

4

絕對如此。 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表達式)。

+0

+1:對於後一種情況的示例 – 2011-05-03 04:38:00

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 
+1

感謝您添加括號,這肯定有助於將可讀性的邏輯分開。 – 2011-05-08 14:12:14

1

您的代碼看起來不錯。當解釋器理解嵌入時,可以將End End放在一起。