ID が 1 ~ 100 の郵便番号があります。
次のクエリは、where 句の ID が存在しない場合でも、カウント 1 を返します。
SELECT COUNT(`id`) AS `Zipcode.count`
FROM `Zipcode`
WHERE `Zipcode`.`id` = "22a" LIMIT 1;
MySQLの舞台裏で「22a」が単に「22」になっているためだと思います。おそらく、MySQL がデータ型などを自動的に変換しているためでしょうか?
以下はゼロカウントを提供します (したがって、char "a" が int "22" の前または後ろにある場合に違いが生じます)。
SELECT COUNT(`id`) AS `Zipcode.count`
FROM `Zipcode`
WHERE `Zipcode`.`id` = "a22" LIMIT 1;
このクエリを文字列と照合したい。データ型が正しくない場合、文字を削除しないでください。これにより、望ましくない答えが誤って提供されます。どちらの場合も、結果はゼロになるはずです。
私に何ができる?