Clause SQL WHERE : espaces de fin dans la correspondance de valeurs
Dans SQL Server, les comparaisons de chaînes utilisant la clause WHERE présentent un comportement particulier qui peut conduire à des résultats inattendus. Plus précisément, l'opérateur d'égalité (=) ignore les espaces de fin lors de l'exécution de comparaisons.
Considérons le scénario suivant :
select '"' + ZoneReference + '"' as QuotedZoneReference from Zone where ZoneReference = 'WF11XU'
Étonnamment, la requête renvoie le résultat suivant :
"WF11XU "
Explication :
Ce comportement découle de la spécification SQL-92, qui stipule que les chaînes dans les opérations de comparaison doivent être complétées par des espaces pour garantir qu'elles ont la même longueur avant la comparaison. Dans ce cas, la valeur ZoneReference dans la clause WHERE (« WF11XU ») est complétée par un espace de fin, ce qui entraîne une correspondance avec la valeur du tableau.
Implications :
Ce remplissage peut entraîner des problèmes lorsque vous tentez de faire correspondre des valeurs exactes pouvant contenir des espaces de fin. Par exemple, si la valeur ZoneReference prévue était en réalité « WF11XU » sans l'espace de fin, la requête ne renverrait aucun résultat.
Solutions :
Pour garantir des correspondances précises, envisagez les solutions suivantes :
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!