2013-10-13 33 views
-3

我似乎無法找到/創建工作查詢,將有額外的零更新x的列當點後值低於0.10 - 我得列X與值;
MySQL的加0時<* 0.10

7.3 
5.3 
0.14 

我試圖更新列,因此當點後的值低於0.10,加上一個零,上面的例子最終將需要的樣子;

7.03 
5.03 
0.14 

有沒有一種方法,我可以做到這一點使用的MySQL更新詢問?

非常感謝。

+2

'後,一個只有一位數字的.3'不低於'.10'少!你的例子是錯誤的。 –

回答

0

我真的不知道背後的操作,但它很簡單。

SELECT CASE 
    WHEN INSTR(id, '.') = 0 THEN id 
    ELSE CASE 
     WHEN CAST(SUBSTRING_INDEX(id, '.', -1) AS UNSIGNED) < 10 THEN 
       CONCAT(SUBSTRING_INDEX(id, '.', 1), '.0', CAST(SUBSTRING_INDEX(id, '.', -1) AS UNSIGNED)) 
     ELSE id 
    END 
END as result 
FROM table_name 


UPDATE table_name SET id = CASE 
    WHEN INSTR(id, '.') = 0 THEN id 
    ELSE CASE 
     WHEN CAST(SUBSTRING_INDEX(id, '.', -1) AS UNSIGNED) < 10 THEN 
       CONCAT(SUBSTRING_INDEX(id, '.', 1), '.0', CAST(SUBSTRING_INDEX(id, '.', -1) AS UNSIGNED)) 
     ELSE id 
    END 
END 

但是,使用此之前,再一次想想你的架構和你有什麼做的。那麼我認爲你不需要這個。

+0

這確實給了我正在尋找的輸出,謝謝。有沒有更新列的方法,以便將'7.3'更新爲'7.03'? – MoonDev

+0

@MoonDev是的,從「SELECT」更改爲「UPDATE」非常簡單。我希望你知道該怎麼做? –

+0

我試過了,哈哈,但是當我這樣做,我在「第1" 行的正確語法及其附近使用(..),當CAST(SUBST」獲得MySQL錯誤 – MoonDev

1

首先,0.03不等於0.30,所以我相信你想要的是7.30,而不是7.03。要做到這一點,你需要改變你的表列中顯示兩個小數位數:

my_magic_column float(3,2)

,其中3是數字的總數和2位小數,顯示的數目。

+0

我知道這不等於0.30。雖然我試圖找到一個將'7.3'設置爲'7.03'的UPDATE查詢。 – MoonDev

+0

好的伴侶,你的問題有點誤導 – rb512

0

看起來像你想要做的是:

update TABLE set YOUR_NUMBER = (FLOOR(NUMBER) + (NUMBER-FLOOR(NUMBER))/10) 
where FLOOR(NUMBER*10) = NUMBER*10 

FLOOR(NUMBER) - 取整數部分,並添加到它:

(NUMBER-FLOOR(NUMBER))/10 - 數的小數部分 - 由10

where條件檢查存在的點