2014-03-19 90 views
0

我有一個名爲XYZ了一個名爲Unit_Value場是DECIMAL(3,2)類型的表,這裏是一些樣本數據:在MySQL數據庫我想如果其他條件

Unit_Value 
--------- 
1.00 
1.25 
1.75 
1.25 
0.50 

我的要求是,如果unit_value >= 0則是應顯示作爲1如果unit_value <= 1則顯示unit_value

我曾嘗試以下:

SELECT unit_value, 
     IF(ROUND(unit_value) = 0, 1, unitvalue) 
    FROM xyz u 
WHERE unit_value IS NOT NULL; 

但是我沒有得到期望的結果。

+0

數據庫引擎? – Sal00m

+0

'IF(ROUND(unit_value)= 0,1,unitvalue)'中最後'unitvalue'的問題必須是'unit_value'。您在字段名稱中錯過了「_」。 – valex

+0

你是指'> = 1'而不是'<= 1'? – amaster

回答

1
SELECT unit_value, 
     CASE WHEN unit_value >=0 THEN 1 ELSE unit_value END 
    FROM xyz u 
WHERE unit_value IS NOT NULL; 
+0

已刪除,謝謝! – AK47

+0

它不起作用 – user3098484

+0

它顯示所有列爲1.列是DECIMAL(3,2)所以請讓我知道 – user3098484

0

問題在它具有IF(ROUND(unit_value) = 0, 1, unitvalue)最後unitvalueunit_value。您在字段名稱中錯過了「_」。

也爲你的條件(unit_value >= 0 then is should display as 1 if unit_value <= 1) 我覺得應該用CEILING而不是ROUND

SELECT unit_value, 
     IF(CEILING(unit_value) = 1, 1, unit_value) 
    FROM xyz u 
WHERE unit_value IS NOT NULL; 

SQLFiddle demo

+0

謝謝,它工作正常,但如果它是空值,然後即刪除where條件,那麼我們如何控制空值。 – user3098484