この記事の内容は MySQL の文字列と数値の比較に関するものです (例付き)。必要な方は参考にしていただければ幸いです。
プロジェクトではあいまい検索をよく使いますが、文字列型と数値型を誤って比較すると、期待した検索結果と異なる場合があります。例:
mybatis の XML ステートメントは次のとおりです:
<if test="criteria != null and criteria.length()>0"> AND (name like concat("%",#{criteria},"%") OR id = #{criteria}) </if>
検索時に「884 test」と入力すると、結果には id=884 のレコードが含まれますが、名前は一致していません。これは、MySQL の文字列と数値の比較の落とし穴です。比較では、文字列型が整数型に変換され、最初の文字から開始され、数値以外の型が見つかった時点で終了します。
いくつかの例を見てみましょう:
SELECT "abc"=1; 结果:0
SELECT "1abc"=1; 结果:1
SELECT "abc"=0; 结果:1
SELECT "a2bc"=2; 结果:0
では、実際には、次のように型変換を行うだけで、この問題を解決できるでしょうか。
#以上がMySQL での文字列と数値の比較 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。