今天公司网站有个注册用户恶意留言,所以运营人员决定封禁该账号,网站注册均为手机号。
写sql查询该手机号的用户(看了表字段,loginname
varchar(255),人才),查询中发现了一个问题,不写引号的话,直接写数字是可以查询出该行的,但是加上引号后便查不出,效果如下图:

几番Google之后,发现时Mysql对于不同数据类型的条件会进行隐式转化(隐式就是你看不到,Mysql自己按照规则将值转化后,再去匹配),不加引号的话,会将loginname作为Int类型进行匹配,所以字符串‘15920147610_disabled’精度上会有损失,如PHP的float类型的精度损失一样。
具体有一些内容网上都有,官网也有介绍,我就不一一写出来了,可以看看几篇文章:
//这篇文章比较全面,列举了几个例子,关于Mysql的隐式转化的规则介绍等: