mysql - 在 MySQL/Sequel Pro 中将 VARCHAR 列转换为 INT

标签 mysql sql sequelpro

我正在尝试将数据库中的列从 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/

相关文章:

php - MySQL SELECT 查询获取记录如果 is_default = 1 否则 is_default = 0?

sql - 检索所有列和多列的性能

ssh - 在Vagrant中安装了其他发行版。现在无法通过SSH进入MySQL

mysql - 尝试在 MySQL 中创建 VIEW 时出错

docker - 无法使用 SequelPro 连接到 Docker 容器内的 MySQL

php - MySQL:根据同一表的一条记录中的一个选定字段中的值删除表中的多行

php - 在数据库中保留电子邮件格式

MySQL如何选择我需要的,很可能是内连接

sql - 如何将 LIKE 与列名一起使用

java - MyBatis - Mapper 与 DAO