Comparaison énigmatique de chaîne à 0 de MySQL : démystifiée
Lors de l'exécution de requêtes MySQL, on peut rencontrer un résultat inattendu : comparer une colonne de chaîne avec 0 (sous forme de nombre) renvoie VRAI de manière inattendue. Ce comportement peut sembler contre-intuitif, surtout lorsque d'autres comparaisons numériques donnent les résultats attendus.
En approfondissant les mécanismes sous-jacents de MySQL, la réponse réside dans sa fonction de conversion automatique. MySQL possède la capacité de convertir de manière transparente une chaîne en nombre, en fonction de certaines conditions :
En utilisant cette logique, nous pouvons percer le mystère de 'string' = 0 renvoyant VRAI. Puisque « string » ne commence pas par un nombre, MySQL l'interprète comme 0, ce qui entraîne la comparaison SELECT 0 = 0, qui bien sûr est évaluée à TRUE.
Cependant, il est important de noter que ces conversions ne ne se produit pas lors de la comparaison directe de chaînes. Par exemple, '0string' = 'string' produirait FALSE comme prévu.
Alternativement, une conversion explicite utilisant un opérateur (tel que ) force MySQL à traiter la chaîne comme un nombre. Lors de l'utilisation d'un opérateur « », MySQL additionne « 0string » et 0, convertissant les deux valeurs en nombres (0 0), ce qui donne la valeur VRAIE attendue.
De plus, MySQL permet également de sommer des chaînes qui incluent des caractères numériques. Par exemple, '1abc' '2ef' se traduit effectivement par 1 2, produisant le résultat attendu de 3.
Comprendre ces mécanismes en coulisses dévoile l'énigme des comparaisons de chaînes à 0 de MySQL, permettant interprétation précise des données et construction de requêtes précise.
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!