2016-09-12 27 views
0

我想顯示xxx而列是空或空的MySQL中,我用case來找出列是否爲空或不列,但列仍然返回空而不是xxx,我是試圖使用下面的代碼,但它不適合我。請幫我整理一下。在MySQL情況下不工作,而使用爲空

SELECT 
CASE WHEN t.`rate` IS NULL THEN 'xxx' 
WHEN t.`rate`=5 THEN 2 
ELSE 3 
END rate FROM `kob_tax` t 
WHERE t.`id_country` = 110 AND t.`id_state` IN(0) AND t.`id_tax_rules_group`=5 
+0

「rate」的數據類型是什麼? – Barmar

+0

我看不出有什麼辦法可以返回空。它應該返回'xxx','2'或'3',沒有別的。 – Barmar

+0

您可能需要另一個WHEN來測試空單元格。 '當t.rate =''那麼'xxx''。 –

回答

0

你的案例陳述應該是這樣寫的。

SELECT 
    CASE 
    WHEN t.`rate` IS NULL THEN 'xxx' 
    WHEN t.`rate`='' THEN 'xxx' 
    WHEN t.`rate`='5' THEN '2' 
    ELSE '3' 
    END 
    as rate FROM `kob_tax` t 
    WHERE t.`id_country` = 110 AND t.`id_state` IN(0) AND t.`id_tax_rules_group`=5 

請參閱本演示的例子:你曾經說過的rate值可以是空:http://sqlfiddle.com/#!9/19f500/1/0

注意。據我所知,具有數字數據類型的列(如INT或其他)認爲空值是無效的。因此我假定稅率爲varchar

+0

如果列可以爲空,則可以通過放置NULL來清空。看我的sqlfiddle。 – Barmar

+0

即使它是varchar,他原來的查詢怎麼會失敗呢?如果值是''''它應該到'ELSE'子句並且返回'3',而不是一個空字符串。 – Barmar

+0

@Barmar OP沒有指定數據類型是int還是varchar。從查詢看來,它似乎是int,但從他的措辭(「空」)它似乎是varchar。我認爲他可能會爲varchar數據類型寫一個錯誤的查詢。所以,我像往常一樣通過演示來回答。讓OP決定你們已經要求澄清......... – geeksal

相關問題