在
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’