Mystère de conversion de chaîne en nombre MySQL : pourquoi 'String' = 0 renvoie True
Lors de la comparaison d'une colonne de chaîne à 0, un un résultat surprenant se produit : il est évalué comme étant vrai. Ce comportement inattendu provient du mécanisme de conversion de type implicite de MySQL.
MySQL convertit automatiquement les chaînes en nombres en fonction des règles suivantes :
Dans le cas de 'string' = 0, puisque la chaîne ne commence pas par un nombre, elle est évaluée comme 0. Cette conversion fait que la comparaison devient '0' = 0, ce qui est vrai.
Cependant, lorsque l'on compare la chaîne à un nombre non nul ou à une chaîne, aucune conversion ne se produit. Par conséquent, 'string' = -12 ou 'string' = '0' est évalué comme faux comme prévu.
Pour remplacer ce comportement par défaut, vous pouvez forcer une conversion vers un type de données spécifique à l'aide de l'opérateur. Par exemple, '0string' 0 convertit la chaîne '0string' en nombre, rendant la comparaison '0' = '0' valide.
Ce mécanisme de conversion peut également être utilisé pour effectuer des opérations arithmétiques sur des chaînes contenant des nombres. . Par exemple, '1abc' '2ef' convertira les chaînes en nombres et les additionnera, ce qui donnera 3.
Comprendre ce comportement de conversion de type est crucial pour éviter des résultats inattendus dans les requêtes MySQL. En tirant parti de l'opérateur pour contrôler explicitement les conversions, vous pouvez garantir que vos comparaisons et calculs sont exacts.
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!