Maison > base de données > tutoriel mysql > Pourquoi la comparaison de chaînes de MySQL avec 0 renvoie-t-elle parfois VRAI ?

Pourquoi la comparaison de chaînes de MySQL avec 0 renvoie-t-elle parfois VRAI ?

Patricia Arquette
Libérer: 2024-11-26 04:24:14
original
873 Les gens l'ont consulté

Why Does MySQL's String Comparison with 0 Sometimes Return TRUE?

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 :

  • Les chaînes commençant par des caractères numériques sont interprétées comme des nombres.
  • Les chaînes dépourvues de caractères numériques de début sont évalué à 0.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal