数値を VARCHAR フィールドと比較するのは愚かな考えであり、比較すべきではないことはわかっていますが、その理由を理解したいだけです。
次のスキーマを持つテーブルがあります。
Table: user
--------------------
number varchar(24)
ストレージ エンジンとして MyISAM を使用しています。
数値フィールドには、数値 ('9999999' など) と文字列 ('signup' など) の混合データが含まれています。
次のクエリを実行しようとしています。
SELECT * FROM user where number=0
ただし、数値フィールドに「signup」などの文字列値または空の数値フィールドが含まれているすべての行を返します。
次のクエリを実行すると..
SELECT * FROM user where number=1 or SELECT * FROM user where number=97654
どの行もその番号フィールドに 1 または 97654 の値を持っていないため、行は返されません。
誰かが mysql が 0 を varchar フィールドと比較する方法を理解するのを手伝ってくれますか?