我似乎無法找到/創建工作查詢,將有額外的零更新x的列當點後值低於0.10 - 我得列X與值;
MySQL的加0時<* 0.10
7.3
5.3
0.14
我試圖更新列,因此當點後的值低於0.10,加上一個零,上面的例子最終將需要的樣子;
7.03
5.03
0.14
有沒有一種方法,我可以做到這一點使用的MySQL更新詢問?
非常感謝。
我似乎無法找到/創建工作查詢,將有額外的零更新x的列當點後值低於0.10 - 我得列X與值;
MySQL的加0時<* 0.10
7.3
5.3
0.14
我試圖更新列,因此當點後的值低於0.10,加上一個零,上面的例子最終將需要的樣子;
7.03
5.03
0.14
有沒有一種方法,我可以做到這一點使用的MySQL更新詢問?
非常感謝。
我真的不知道背後的操作,但它很簡單。
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
但是,使用此之前,再一次想想你的架構和你有什麼做的。那麼我認爲你不需要這個。
看起來像你想要做的是:
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
條件檢查存在的點
'後,一個只有一位數字的.3'不低於'.10'少!你的例子是錯誤的。 –