Maison >base de données >tutoriel mysql >Comment résoudre l'écueil du jugement de valeur 0 dans Mysql

Comment résoudre l'écueil du jugement de valeur 0 dans Mysql

PHPz
PHPzavant
2023-05-29 12:01:261439parcourir

    Pièges de Mysql concernant un jugement de valeur 0

    Récemment, j'ai rencontré un problème avec Mysql renvoyant plusieurs valeurs, et j'ai finalement découvert qu'il s'agissait d'un problème avec un jugement de valeur 0 dans les conditions de filtre MySQL.

    La question concise est la suivante

    Il existe un champ INT a, la valeur par défaut est 0 et la condition de jugement transmise par le programme est a = 'abacd'.

    L'entrée est une chaîne et toutes les données avec a=0 sont renvoyées.

    Raison

    mysql fera un jugement logique S'il s'agit d'un jugement entier, mais que l'entrée est une chaîne, si la chaîne n'est pas un nombre, la chaîne sera convertie en 0. Par conséquent,

    La condition réelle jugée par ce code est a = 0.

    Solution

    Lorsque vous effectuez des jugements logiques dans MySQL, vous devez vous assurer que la valeur entrante est cohérente avec le type de champ, c'est-à-dire que les champs entiers doivent être jugés comme des entiers et les champs de chaîne doivent être jugés comme des chaînes. Lorsque des jugements croisés doivent être effectués, des ajustements appropriés doivent être effectués en fonction de la logique métier pour éviter d'avoir des ennuis.

    Extension du problème

    Si le champ a est de type varchar et que la valeur est 0, alors a='0' doit être utilisé pour juger, au lieu de a = 0. La raison est cohérente avec la raison ci-dessus, la chaîne sera converti en 0 , le résultat final est 0 = 0.

    Résumé des malentendus dans le jugement Mysql de valeur 0

    Dans MySQL, lorsque le champ de la table de données est de type int, vous pouvez juger si le champ est 0, et il n'y aura aucun problème. S'il s'agit d'un type char ou varchar, vous devez utiliser « 0 ». Évidemment, les chaînes et les entiers ne sont pas équivalents. Alors ne commettez pas une erreur aussi stupide.

    Voici le principe de recherche mysql trouvé sur Internet :

    mysql convertira d'abord la valeur du champ en un entier puis la comparera.

    Si le premier chiffre du champ est une chaîne, alors il sera converti en entier et il sera 0.

    Généralement, les guillemets sont requis lors de la recherche de chaînes.

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer