3
我在SQL(Server 2008)中使用CASE語句時存在一個普遍問題,並且您的WHEN條件中有多個條件爲真,但結果標誌將不同。CASE語句SQL:情況優先?
這是一個假設的例子,但在跨多列應用檢查以對行中的數據進行分類時可能是可轉移的。以下代碼的輸出取決於案件的排序方式,因爲兩者都是正確的。
DECLARE @TESTSTRING varchar(5)
SET @TESTSTRING = 'hello'
SELECT CASE
WHEN @TESTSTRING = 'hello' THEN '0'
WHEN @TESTSTRING <> 'hi' THEN '1'
ELSE 'N/A'
END AS [Output]
一般來說,以這種方式創建標誌會被認爲是不好的做法嗎? OR WHERE,OR語句會更好嗎?
我一直認爲他們爲了評估它們發生在代碼的順序,但仔細想來,我從來沒有實際驗證過。 – Brandon
從邏輯上說,它是按它編碼的順序排列的。當第一個遇到時,'CASE'將停止,然後第二個然後是其他部分。你測試過了嗎? – CodeBird
-1對此沒有做任何研究。您可以在Microsoft網站上找到所需的信息。 – Kapol