Mysql 明明只有一条数据却查询出来多条

之前开发的时候也遇见过这个问题,查询结果与实际不符,数据库明明只有一条符合条件的数据却显示了多条
例如:
表t1

Create Table: CREATE TABLE `t1` (
  `id` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

数据如下:

+--------------------+
| id                 |
+--------------------+
| 204027026112927605 |
| 204027026112927603 |
| 2040270261129276   |
| 2040270261129275   |
| 100                |
| 101                |
+--------------------+

查询ID为204027026112927603:

select * from t1 where id=204027026112927603;

查询结果却这样显示:

+--------------------+
| id                 |
+--------------------+
| 204027026112927605 |
| 204027026112927603 |
+--------------------+
2 rows in set (0.00 sec)

????what个情况,瞬间怀疑人生

将sql改为 : select * from t1 where id='204027026112927603';

+--------------------+
| id                 |
+--------------------+
| 204027026112927603 |
+--------------------+
1 rows in set (0.00 sec)

结果就正常了。。。为啥会这样呢?
答案是 发生了隐式类型转换!

经过测试,当数字超过16位以后,转成double类型就已经不准确了,例如20402702611292711会表示成20402702611292712

详细可参考: https://mp.weixin.qq.com/s/3C7yNtrY7hNRnslPVeA27g

发布了36 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/m0_37826705/article/details/101023054