あなたemail
列はCHAR
またはVARCHAR
タイプです。条件email = 0
を使用すると、MySQLはemail
カラムの内容を整数にキャストして、指定したカラムと比較します。 0を引用符で囲んだ場合、クエリは期待通りに機能します。あなたは数値文字列と同じことをしようとした場合(email = '0'
)
は、対照的に0
mysql> SELECT CAST('[email protected]' AS SIGNED);
+-------------------------------------+
| CAST('[email protected]' AS SIGNED) |
+-------------------------------------+
| 0 |
+-------------------------------------+
になりますMySQLでの整数に数値以外の文字列を変換する、彼らは正確に唱えてもよい:
あなたは電子メールの欄が空白または空すべきでないすべてのレコードを取得したい場合
mysql> SELECT CAST('12345' AS SIGNED);
+-------------------------+
| CAST('12345' AS SIGNED) |
+-------------------------+
| 12345 |
+-------------------------+
思いますか?私はこれがバグを導入しやすい場所だと思います。私は、なぜ文字列を0に変換するような変換変換を行わないようにする必要があるのかを知ることはできません.0を0に変換する方が良いのはなぜですか? –