我有這樣的MySQL查詢已讓我一整天完全難倒:查詢主鍵列上的空字符串是否匹配零?
SELECT * FROM `table` WHERE id = "";
我很驚訝的是,該查詢返回一行其中id爲「0」。這是預期的行爲?如果是的話,我應該如何排除這一行?當我傳遞空字符串時,我需要這個查詢來返回沒有行。
現在id
是主鍵列和auto_increment
,如果這可能有所幫助。
編輯
它會變得更加有趣。我剛剛使用任意字符串運行查詢,如下所示:
SELECT * FROM `table` WHERE id = "xyz";
它仍然返回ID爲零的行。它看起來像查詢是以某種方式將我的查詢參數轉換爲INTEGER。這對我來說是新的!
是的。我猜「隱式類型轉換」是怎麼回事。當我提醒說'SELECT'xyz「= 0;'yield'TRUE'時,我感到很有趣。所以,我認爲問題是由這個和(不常見的)」0「值的組合INTEGER列。 –