我有一个名为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
1条答案
按热度按时间r6l8ljro1#
我在MySQL上测试了这个,它运行得很好。所以这显然是MariaDB的问题。
问题是像'24000.00'这样的字符串不是整数。整数没有小数位。所以在严格模式下,隐式类型转换失败。
我可以通过首先运行此更新来解决此问题:
该列仍然是字符串,但“24000.00”已更改为“24000”(没有小数点字符或后面的数字)。
然后,您可以更改数据类型,并将隐式类型转换为整数:
请参阅使用MariaDB 10.6的演示:
https://dbfiddle.uk/V6LrEMKt
P.S.:在示例DDL中,您将列名“commission_pct”拼错为“commission_pct”,我不得不对其进行编辑以进行测试。以后,请使用其中一个db fiddle站点来共享示例,因为它们将测试您的代码。