mysql varchar类型存储18位数字查询问题

CREATE TABLE test_spec (
id bigint(20) NOT NULL AUTO_INCREMENT,
config_id varchar(200) COLLATE utf8mb4_bin DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=501 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

1.config_id 插入896523543609131733到896523543609131829,末尾递增1,
100条数据。
2.select * from test_spec ts where ts.config_id = 896523543609131733;
查询条件没有加字符串引号
查询出所有100条结果
如图:

clipboard.png
经过测试,长度超过17位网上,都有这样的问题
17位如图,100条记录返回6条

clipboard.png

16位,一条记录

clipboard.png
翻了半天资料,没找出为什么,代码里面要注意了?

阅读 2.9k
1 个回答

当你查询时不添加引号就成了 整数形整数型 的大小在计算机中是有上限,当超出后就会被截断或者科学计数,所以会出现意外的内容。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题