ホームページ >データベース >mysql チュートリアル >文字列を 0 と比較すると MySQL が TRUE を返すのはなぜですか?

文字列を 0 と比較すると MySQL が TRUE を返すのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-29 12:12:12874ブラウズ

Why Does MySQL Return TRUE When Comparing a String to 0?

MySQL 文字列比較の異常: 謎の解明

MySQL 文字列カラムを値 0 と比較すると、予期しない結果が発生します。真実!この不可解な動作は、MySQL の文字列から数値への自動キャストが原因である可能性があります。

デフォルトでは、MySQL は数値比較を実行するときに文字列を数値に変換しようとします。文字列が数字で始まらない場合、その値は 0 であるとみなされます。この場合、'string' は 0 に変換され、比較結果は 'string' = 0 となります。

ただし、このキャスト動作は数値比較にのみ適用されます。文字列を他の文字列と比較する場合、自動変換は行われません。したがって、'string' と文字列としての '0' を比較すると、正しく FALSE が返されます。

この動作をさらに詳しく説明するために、次の例を考えてみましょう:

  • '1string' = 0: FALSE
  • '1string' = 1: TRUE
  • '0string' = 0: TRUE
  • 'string' = 0: TRUE

この異常を回避し、一貫した動作を保証するには、数値比較を実行する前に文字列を目的のデータ型に明示的にキャストすることをお勧めします。たとえば、次のクエリは '0string' を数値として強制的に処理します:

  • '0string' 0 = 'string': TRUE

このクエリは TRUE を返します。 '0string' は数値 0 に加算されると数値 0 に変換されるためです。同様に、'1abc' '2ef' は文字列の合計を返します。数値 (この場合は 3) に変換されます。

MySQL の自動キャスト メカニズムを理解することで、開発者は予期しない結果を回避し、正確な文字列比較を保証できます。

以上が文字列を 0 と比較すると MySQL が TRUE を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。