更改 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 位小数),如果不增加长度,您可能会丢失一些值。
您只能通过@Barranka 建议的 ALTER
来完成。但是,有两个增强功能:
- 在单个 ALTER 中修改单个 table 中的所有列;这会 运行 更快。
- 您 可以 编写一个存储过程来读取 information_schema.COLUMNS 以发现哪些 table 具有 DECIMAL(xx,2) 并为您创建 ALTER .
但是,为什么要保留 4 位小数?如果您对数字的精度那么松散,也许 FLOAT 或 DOUBLE 就足够了?
我在 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 位小数),如果不增加长度,您可能会丢失一些值。
您只能通过@Barranka 建议的 ALTER
来完成。但是,有两个增强功能:
- 在单个 ALTER 中修改单个 table 中的所有列;这会 运行 更快。
- 您 可以 编写一个存储过程来读取 information_schema.COLUMNS 以发现哪些 table 具有 DECIMAL(xx,2) 并为您创建 ALTER .
但是,为什么要保留 4 位小数?如果您对数字的精度那么松散,也许 FLOAT 或 DOUBLE 就足够了?