MySQL での文字列と数値の比較 (例付き)

不言
リリース: 2018-12-21 10:22:13
転載
4045 人が閲覧しました

この記事の内容は 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート