2012-10-16 61 views
1

裏面我有以下查詢:如果交換機CASE語句

SELECT  ua.attribute_id, ma.attribute_name, ma.attribute_type, ma.attribute_default, ma.attribute_format, 
    (CASE ma.attribute_type 
     WHEN 0 THEN ua.attribute_default 
     WHEN 1 THEN ua.attribute_bool 
     WHEN 2 THEN ua.attribute_combo 
     WHEN 3 THEN ua.attribute_decimal 
     WHEN 4 THEN ua.attribute_integer 
     WHEN 5 THEN ua.attribute_decimal 
    END) AS attribute_value 
FROM  units_attributes AS ua 
LEFT JOIN models_attributes AS ma ON ma.attribute_id = ua.attribute_id 
WHERE  ua.unit_id = 1 

我想提出一個IF爲attribute_value。如果attribute_valueNULL,那麼我想用ua.attribute_default

我已經嘗試了AS後使用IF語句,但它不工作...

感謝。

回答

4

不使用IF,請嘗試使用COALESCE()。它接受多個參數並返回第一個非空值。

COALESCE(attribute_value, ua.attribute_default) 
+0

謝謝!像魅力一樣工作!不知道這個功能......現在確實如此!會記住它。將在10分鐘內標記爲接受(我不能在之前)。非常感謝 ! –

+0

沒有問題。很高興它對你有效! – Travesty3

+0

如果它是空的,是否有類似的東西?我想我必須檢查它是否爲空,如果是,我將設置爲NULL。你可以確認嗎?& –