Mysql查詢條件加引號與不加引號的區別
開頭向大家問好,看了上篇文章閱讀數激增到300+,覺得寫的文章還是對一些人有幫助的,很開心。其實我並不是個善於言辭的人,生活中我是個很陰鬱的人,並不是所有人都喜歡和我做朋友,這麼多人(我知道其實沒300人,閱讀數不是人次數,好歹我也是程式設計師。)看了我的文章,讓我有一點小開心,希望大家可以給我一些留言建議,我會認真的回覆。謝謝。
好了,說了那麼多,讓我們來看今天遇到的問題:
今天公司網站有個註冊使用者惡意留言,所以運營人員決定封禁該賬號,網站註冊均為手機號。
寫sql查詢該手機號的使用者(看了表字段,`loginname` varchar(255),建表的真是個奇人),查詢中發現了一個問題,不寫引號的話,直接寫數字是可以查詢出該行的,但是加上引號後便查不出,效果如下圖:
幾番Google之後,發現時Mysql對於不同資料型別的條件會進行隱式轉化(隱式就是你看不到,Mysql自己按照規則將值轉化後,再去匹配),不加引號的話,會將loginname作為Int型別進行匹配,所以字串‘15920147610_disabled’精度上會有損失,如PHP的float型別的精度損失一樣。
具體有一些內容網上都有,官網也有介紹,我就不一一寫出來了,可以看看幾篇文章:
//這篇文章比較全面,列舉了幾個例子,關於Mysql的隱式轉化的規則介紹等:
https://yq.aliyun.com/articles/39477
:)