在mariadb中更改列类型并将现有值从字符串转换为整数

toe95027  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(301)

我有一个名为employees
第一个
我想将salary列从string更改为integer,因此运行了以下命令

MariaDB [company]> alter table employees modify column salary int;
ERROR 1292 (22007): Truncated incorrect INTEGER value: '24000.00'

正如你所看到的,它给了我truncation错误。我找到了一些以前的问题,他们展示了如何使用convert()trim(),但这些实际上并没有回答我的问题。
sql代码和数据可在此处找到https://0x0.st/oYoB.com_5zfu

r6l8ljro

r6l8ljro1#

我在MySQL上测试了这个,它运行得很好。所以这显然是MariaDB的问题。
问题是像'24000.00'这样的字符串不是整数。整数没有小数位。所以在严格模式下,隐式类型转换失败。
我可以通过首先运行此更新来解决此问题:

update employees set salary = round(salary);

该列仍然是字符串,但“24000.00”已更改为“24000”(没有小数点字符或后面的数字)。
然后,您可以更改数据类型,并将隐式类型转换为整数:

alter table employees modify column salary int;

请参阅使用MariaDB 10.6的演示:
https://dbfiddle.uk/V6LrEMKt
P.S.:在示例DDL中,您将列名“commission_pct”拼错为“commission_pct”,我不得不对其进行编辑以进行测试。以后,请使用其中一个db fiddle站点来共享示例,因为它们将测试您的代码。

相关问题