我似乎无法找到/创建一个工作查询,当点后的值低于 0.10 时,它将用额外的零更新 x 列 - 我有 x 列的值;
7.3
5.3
0.14
我正在尝试更新该列,因此当点之后的值低于 0.10 时,它会添加一个零,上面的示例最终需要看起来像;
7.03
5.03
0.14
有没有办法可以使用 mysql UPDATE 查询来做到这一点?
非常感谢。
首先,0.03 不等于 0.30,所以我相信你想要的是 7.30 而不是 7.03。为此,您需要更改表格列以显示两位小数:
my_magic_column float(3,2)
其中 3 是总位数,2 是要显示的小数位数。
我真的不知道这种操作背后的想法,但这很简单。
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
条件检查点后是否只有一位数字