MySQL の文字列から数値への変換の謎: 'String' = 0 が True を返す理由
文字列カラムを 0 と比較すると、驚くべき結果が発生します。それは true と評価されます。この予期しない動作は、MySQL の暗黙的な型変換メカニズムに起因します。
MySQL は、次のルールに基づいて文字列を数値に自動的に変換します。
'string' = 0 の場合、文字列が数字で始まっていないため、0 として評価されます。この変換の結果、比較は '0' = 0 になります。これは true です。
ただし、文字列をゼロ以外の数値または文字列と比較する場合、変換は行われません。その結果、'string' = -12 または 'string' = '0' は期待どおり false と評価されます。
このデフォルトの動作をオーバーライドするには、演算子を使用して特定のデータ型への変換を強制できます。たとえば、「0string」0 は文字列「0string」を数値に変換し、比較「0」=「0」を有効にします。
この変換メカニズムは、数値を含む文字列に対して算術演算を実行するために利用することもできます。 。たとえば、「1abc」「2ef」は文字列を数値に変換し、それらを合計すると 3 になります。
この型変換の動作を理解することは、MySQL クエリでの予期しない結果を回避するために重要です。演算子を利用して変換を明示的に制御することで、比較と計算が正確であることを保証できます。
以上がMySQL で 'String' = 0 が True を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。