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’


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM