MySQL bigint类型显示丢失精度问题

HipPop223 2018-07-03 11:19:31

CREATE TABLE test_bigint (a BIGINT(10) UNSIGNED, b varchar(10));
INSERT INTO test_bigint(a, b) VALUES(288980000006990679, 'a');

执行以下select

SELECT * FROM test_bigint;


如上所示,建立一个字段a的类型为bigint(10),显示宽度为10,但是插入测试数据288980000006990679,select的结果却是288980000006,显示宽度却是12,并不是10,请问这是为什么?
...全文
1769 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
HipPop223 2018-07-05
  • 打赏
  • 举报
回复
引用 6 楼 lzd_83 的回复:
实际项目的需求也有关系,自己控制就好。
实际上存的确实是288980000006990679,但是navicat默认展示288980000006。在上面回复中,我试了在命令行,确实可以返回288980000006990679。
HipPop223 2018-07-05
  • 打赏
  • 举报
回复
引用 5 楼 ACMAIN_CHM 的回复:
显示的时候要自己控制格式。
请问,除了CAST(a AS CHAR) 或者CAST(a AS UNSINGED)之外,怎么控制格式呢?上面两个cast确实能在navicat上显示全,但是为什么默认显示不全呢?比较困惑这个,多谢哈
Rotel-刘志东 2018-07-05
  • 打赏
  • 举报
回复
实际项目的需求也有关系,自己控制就好。
zjcxc 2018-07-04
  • 打赏
  • 举报
回复
所以通常不要弄这个
zjcxc 2018-07-04
  • 打赏
  • 举报
回复
这个显示的宽度跟客户端的具体实现有关,比如你用 mysql 命令行,那根本就没实现宽度显示限制,直接显示的是完整的数据
ACMAIN_CHM 2018-07-04
  • 打赏
  • 举报
回复
显示的时候要自己控制格式。
HipPop223 2018-07-03
  • 打赏
  • 举报
回复
上面说错了,10代表的最小宽度,但是我插入的测试数据是18位,应该显示18位,而不是12位。
grl0524 2018-07-03
  • 打赏
  • 举报
回复
在自己的测试表中复制了你的命令执行,貌似结果没有问题。坐等其他高手回答。

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧