事情是這樣的,今天在寫sql的時候,table中有一個字段是platform,本來的意思是:0安卓,1蘋果。
但是由于是測試環(huán)境,我在仿造數(shù)據(jù)的時候?qū)⒁恍?shù)據(jù)的platform寫成了IOS。
//sql
select * from table where platform=1
這時報了個沒有這個字段的錯誤。改成如下sql后沒有異常:
//sql
select * from table where `platform`=1
- 總結(jié):
mysql雖然為我們提供了一些便利,比如可自動將條件中的數(shù)字轉(zhuǎn)換成字符串,或?qū)⒆址D(zhuǎn)換成數(shù)字,但這種隱性的轉(zhuǎn)換卻給系統(tǒng)的擴(kuò)展和維護(hù)埋下了隱患,尤其是一些手工維護(hù)的代碼表,本來沒有什么特別的規(guī)則,就是一個編號,無法預(yù)期存儲的內(nèi)容。所以對于number的字段用大于,小于或者等于的判斷不會有問題,因?yàn)閿?shù)據(jù)庫里有約束,肯定是數(shù)字,但對于varchar類型的字段用就有問題了,所以雖然有些時間sql語句可以執(zhí)行,但規(guī)范的編寫方式可以使程序更健壯。