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