MySQL中隐式转换导致的查询结果错误案例分析

某一天,开发问我,为什么针对一个查询会有两条记录,且其中一条记录并不符合条件
select * from tablea where xxno = 170325171202362928;
xxno170325171202362928170325171202362930的都出现在结果中。
一个等值查询为什么会有另外一个不同值的记录查询出来呢?我们一起来看看究竟

二、分析

我们查看该表结构,发现xxnovarchar 类型,但是等号右边是一个数值类型,这种情况下MySQL会如何进行处理呢?
官方文档如下:https://dev.mysql.com/doc/refman/5.6/en/type-conversion.html

The following rules describe how conversion occurs for comparison operations: .... 省略一万字 ....

In all other cases, the arguments are compared as floating-point (real) numbers.

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-15 17:21
浙ICP备14020137号-1 $Carte des visiteurs$