Maison >base de données >tutoriel mysql >Pourquoi ma clause SQL WHERE correspond-elle aux chaînes avec des espaces de fin ?

Pourquoi ma clause SQL WHERE correspond-elle aux chaînes avec des espaces de fin ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-31 17:25:12138parcourir

Why Does My SQL WHERE Clause Match Strings with Trailing Spaces?

Espaces de fin et correspondance de clause SQL WHERE

Dans SQL, la clause WHERE permet le filtrage des données en fonction de conditions spécifiées. Lors de la mise en correspondance de valeurs, il est crucial de comprendre comment les espaces sont gérés.

Dans le scénario fourni, une requête est utilisée pour sélectionner ZoneReferences dans une table Zone avec une valeur ZoneReference spécifiée. Le résultat contient de manière inattendue un espace de fin, ce qui soulève des inquiétudes quant à la validité des données.

Le comportement rencontré est cohérent avec l'interprétation de la clause WHERE par SQL Server. La spécification ANSI/ISO SQL-92 stipule que les espaces de fin ne sont pas pris en compte lors des comparaisons. Un remplissage est appliqué pour égaliser les longueurs de chaîne avant d'effectuer la comparaison, garantissant que 'abc' et 'abc' sont considérés comme équivalents.

Cette règle est vraie pour la plupart des opérations de comparaison, mais elle n'est pas applicable au prédicat LIKE. Le prédicat LIKE est conçu pour la recherche de modèles, et les espaces de fin sur le côté droit ne sont pas ignorés.

Pour éviter toute confusion, il est recommandé de toujours s'assurer que les champs de données sont correctement tronqués pour éliminer les espaces de fin et obtenir des résultats précis. résultats de comparaison.

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:
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