我似乎无法找到/创建一个工作查询,当点之后的值低于.10时,它将使用额外的零更新x列。我有列x的值;
7.3
5.3
0.14
我正在尝试更新列,所以当点后面的值低于.10时,它会增加一个零,上面的例子最终需要看起来像;
7.03
5.03
0.14
有没有办法可以使用mysql UPDATE-query做到这一点?
非常感谢。
答案 0 :(得分:1)
首先,0.03不等于0.30,所以我相信你想要的是7.30而不是7.03。为此,您需要更改表列以显示两位小数:
my_magic_column float(3,2)
其中3是总位数,2是要显示的小数位数。
答案 1 :(得分: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
但在使用之前,请再次考虑您的架构以及您要做什么。我觉得你不需要这个。
答案 2 :(得分: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
条件检查点后面只有一个数字