mysql查询语句,int类型加引号居然也能查

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’
上一篇:0044 用户授权


下一篇:Mysql索引笔记