2013-06-12 160 views
2

所以我有一個相當長的複雜查詢,但要點是查詢的基本功能看起來像這樣SELECT verification_id FROM verification_table有沒有辦法在SQL查詢中執行條件邏輯?

verification_id返回一個0-3的整數。有沒有辦法在SQL查詢中執行某些操作,如果verification_id爲0,則返回一個字符串,如「new」,對於所有的4個verification_id都返回不同的字符串。

我能做到這一點通過PHP後端,但我想知道是否有辦法通過MySQL的

+0

看看IF()這裏:http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if你可以使用嵌套的IFs,像SELECT IF(STRCMP(verification_id ,'A'),'IS A',IF(STRCMP(verification_id,'B','IS B','IS NOT A NOR B')); – kiewic

回答

3
SELECT CASE 
     WHEN verification_id = 0 THEN 'new' 
     WHEN verification_id = 1 THEN 'something else' 
     ELSE 'error?' 
     END AS myvalue 
FROM verification_table 

這樣的事情應該工作。

儘管您可能會考慮使用mysql ENUM字段類型,它基本上將文本字符串轉換爲數字,反之亦然。這是存儲這些值的有效字段類型。

+0

'WHEN verification_id = 0'兩次。錯字? – Basic

+1

是...複製n貼魔鬼... –

6

你想要一個case語句來做到這一點。它可用於布爾條件語句以及多個結果之間的選擇......

SELECT [Condition] 
    CASE WHEN TRUE THEN 'True' 
    ELSE 'False' 
END 
FROM [Table] 

注意,每個分支的返回類型必須是相同的 - 列只能是一種類型的

+0

我將是一個讓你達到10k的人! – Sebas

+0

@Sebas Mighty親切,謝謝:) – Basic

相關問題