Mysqlにおける0値判定の落とし穴を解決する方法

PHPz
リリース: 2023-05-29 12:01:26
転載
1320 人が閲覧しました

    Mysql の 0 値判定に関する落とし穴

    最近、Mysql が複数の値を返すという問題に遭遇し、最終的には、 mysqlのフィルター条件の質問です。

    簡潔な質問は次のとおりです。

    INT フィールド a があり、デフォルト値は 0 で、プログラムによって渡される判定条件は a = 'abacd' です。

    入力は文字列であり、a=0 のすべてのデータが返されます。

    原因

    Mysqlは論理判定を行うので、整数判定でも入力が文字列の場合、文字列が数値でない場合は文字列を0に変換します。したがって、

    このコードで判断される実際の状態は a = 0 となります。

    解決策

    MySQL で論理的な判断を行う場合は、受信値がフィールド タイプと一致していることを確認する必要があります。つまり、整数フィールドは整数として判断され、文字列フィールドは整数として判断される必要があります。文字列として判断されます。複数のタイプにまたがる判断を行う必要がある場合、トラブルに巻き込まれないように、ビジネス ロジックに基づいて適切な調整を行う必要があります。

    問題の拡張

    フィールド a が varchar 型で値が 0 の場合、同様の理由で a = 0 ではなく a='0' を判定に使用する必要があります。上記の場合、文字列は 0 に変換され、最終結果は 0 = 0 になります。

    値0判定におけるMySQLの誤解まとめ

    MySQLでは、データテーブルのフィールドがint型の場合、そのフィールドが0であるかどうかで判断でき、問題は発生しません。 char 型または varchar 型の場合は、「0」を使用する必要があります。明らかに、文字列と整数は等価ではありません。だから、そんな愚かな間違いをしないでください。

    次は、インターネット上で見られる mysql 検索の原理です。

    mysql は、まずフィールド値を整数に変換し、それから比較します。

    フィールドの最初の桁が文字列の場合、整数に変換され、0 になります。

    通常、文字列を検索する場合は引用符を追加する必要があります。

    以上がMysqlにおける0値判定の落とし穴を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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