更改 MySQL 中所有表格中的小数位数

Change number of decimal digits in all tables in MySQL

我在 SQL 方面经验不多,我需要按如下方式修改我的表格,但不知道如何操作。

我有一个包含多个表的 MySQL 数据库,其中一些列的类型为DECIMAL(17, 2) 并且我需要尽可能有效地将类型更改为至少有 4 位小数。

有人可以帮我解决这个问题吗?

提前致谢。

您可以使用 ALTER TABLE 更改列定义。示例:

alter table your_table
    modify column a_number decimal(19,4);

在此示例中,我增强了列 a_number,因此它现在包含长度为 19 且小数点后 4 位的数字。您需要增加列的长度,而不仅仅是小数位,因为如果您有 17 位数字(包括 2 位小数),如果不增加长度,您可能会丢失一些值。

检查the reference manual for ALTER TABLE

您只能通过@Barranka 建议的 ALTER 来完成。但是,有两个增强功能:

  • 在单个 ALTER 中修改单个 table 中的所有列;这会 运行 更快。
  • 可以 编写一个存储过程来读取 information_schema.COLUMNS 以发现哪些 table 具有 DECIMAL(xx,2) 并为您创建 ALTER .

但是,为什么要保留 4 位小数?如果您对数字的精度那么松散,也许 FLOAT 或 DOUBLE 就足够了?