我正在尝试将数据库中的列从 VARCHAR 设置为 INT(值已经在数据库中)
执行此操作时,会发生以下情况(示例):
| number (varchar) | number (int |
| 20090911913 > 2147483647 |
| 3009092113 > 2147483647 |
每个数字都是唯一的(具有 VARCHAR 值),当将列设置为 INT 时,所有值都变得相同 (2147483647)。请注意,所有值都是 VARCHAR 时不包含字母(我检查过)
现在我不知道为什么会这样,数据来自 CSV,我在导入 Sequel Pro 时检查记录是否有不同的编号(不是 2147483647)。在 GUI 中它显示它是不同的,但是当所有导入时它会自动变成 2147483647。
发生了什么,我该如何预防?
最佳答案
当您转换超出有符号整数类型 Int
范围的数字时,从 -2147483648 到 2147483647(即从 -231 到 231-1), MySql 将该值限制为可以存储在Int
中的最大值,即2147483647。
您显示的两个值都在 Int
可表示的范围之外。您需要使用 BigInt
代替它们。
关于mysql - 在 MySQL/Sequel Pro 中将 VARCHAR 列转换为 INT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37457623/