-3

我似乎无法找到/创建一个工作查询,当点后的值低于 0.10 时,它将用额外的零更新 x 列 - 我有 x 列的值;

7.3
5.3
0.14

我正在尝试更新该列,因此当点之后的值低于 0.10 时,它会添加一个零,上面的示例最终需要看起来像;

7.03
5.03
0.14

有没有办法可以使用 mysql UPDATE 查询来做到这一点?

非常感谢。

4

3 回答 3

1

首先,0.03 不等于 0.30,所以我相信你想要的是 7.30 而不是 7.03。为此,您需要更改表格列以显示两位小数:

my_magic_column float(3,2)

其中 3 是总位数,2 是要显示的小数位数。

于 2013-10-14T00:00:28.290 回答
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

但在使用它之前,请再次考虑您的架构以及您要做什么。我不认为你会需要这个。

于 2013-10-14T00:07:38.610 回答
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条件检查点后是否只有一位数字

于 2013-10-14T00:16:57.843 回答