在
SELECT * FROM table WHERE mobile= ‘101dd’;
SELECT * FROM table WHERE mobile = '101';
中,当mobile是数字类型是,不管匹配的是‘101dd’还是'101'+"其他字符",都能查询出mobile为101的数据
原理:
Mysql会将传入的string(要赋值给int字段的)从左到右的第一个非数值开始,将后面的字符串转成0,再和数值类型相加,如上述例子就是“101dd”->101+0+0=101,也就是等效于SELECT * FROM table WHERE mobile = '101';
。
另外:如果非要比较将字符串比较的化
解决方法
增加BINARY 关键子,强制转换为二进制比较
SELECT * FROM table
WHERE BINARY mobile = BINARY ‘dd’