Maison > base de données > tutoriel mysql > le corps du texte

Pourquoi MySQL considère-t-il les comparaisons de chaînes avec zéro comme vraies ?

Linda Hamilton
Libérer: 2024-11-26 07:57:09
original
676 Les gens l'ont consulté

Why Does MySQL Treat String Comparisons to Zero as True?

Comparaison de chaînes à zéro dans MySQL : dévoiler la vérité

Lorsque l'on compare des colonnes de chaînes avec zéro dans MySQL, un comportement surprenant est révélé : le le résultat est évalué à vrai. Cela se produit dans des scénarios tels que :

select 'string' = 0 as res; -- res = 1 (true)
Copier après la connexion

Cependant, comparer la même chaîne à d'autres nombres, à la fois positifs et négatifs, donne le faux résultat attendu. Cette incohérence soulève la question : pourquoi cette anomalie se produit-elle ?

Derrière la magie des chaînes

MySQL convertit silencieusement les chaînes en nombres lors des comparaisons. Pour les chaînes qui ne commencent pas par un nombre, la conversion renvoie zéro. Cela explique pourquoi :

select 'string' = 0 as res;  -- res = 1 (true)
Copier après la connexion

Contrôler la conversion

Bien que MySQL gère souvent les conversions automatiquement, les forcer à utiliser des opérateurs comme « » peut être utile. Considérez ceci :

select '0string' + 0 = 'string' AS res; -- res = 1 (true)
Copier après la connexion

Dans cette requête, la chaîne « 0string » est ajoutée à zéro, provoquant sa conversion en nombre. Par la suite, la chaîne convertie « string » est comparée à zéro, déclenchant à nouveau une conversion. La comparaison qui en résulte s'effectue entre des valeurs numériques, ce qui donne vrai.

Les conversions automatiques de chaînes de MySQL s'étendent au-delà des comparaisons. Par exemple :

select '1abc' + '2ef' AS total; -- total = 1+2 = 3
Copier après la connexion

Les chaînes sont converties en nombres avant l'addition, ce qui entraîne des opérations numériques correctes.

Comprendre ce mécanisme de conversion de chaînes aide à démystifier le comportement apparemment paradoxal des comparaisons de chaînes MySQL. Il permet aux développeurs d'exploiter efficacement cette fonctionnalité dans l'écriture de requêtes et la manipulation de données.

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