Page 1 sur 1

Comparaison de chaînes, champ sql de type TEXT

Posté : 01 juin 2020, 21:50
par finipe
Bonjour à tous,

Je dois comparer deux champs de types TEXT dans une base de données pour vérifier s'ils sont identiques.
Il s'agit d'adresses, formatées comme ceci :

"SOCIETE SCHMURTZ
JEAN JACQUES BIDULE
28 AVENUE DU FROMAGE
55000 BAR LE DUC"

Il n'y a pas d'accent, tout est en majuscules.

Et j'obtiens des résultats assez étranges : parfois, les champs comportent des différences que je ne m'explique pas : il n'y a pas le même nombre de caractères selon les champs, alors que l'insertion dans la base a (théoriquement) eu lieu exactement de la même façon.

En décomposant des adresses caractère par caractère, je me suis rendu compte que certaines chaînes avaient des caractères blancs supplémentaires (espaces ? retours chariots ?). Alors j'ai fait un preg_replace pour enlever tous les caractères blancs avant de comparer, et ça fonctionne.

Mais quand même, j'aimerais bien comprendre :roll:

Re: Comparaison de chaînes, champ sql de type TEXT

Posté : 02 juin 2020, 13:10
par Spols
Je pencherais pour des retour chariot et passage à la ligne qui sont parfois tous les deux parfois un des 2.

mais sans les chaines en question pas possible d'être sur.

Il est aussi possible qu'il y ait des espace à la fin du text.

Re: Comparaison de chaînes, champ sql de type TEXT

Posté : 06 juin 2020, 02:44
par finipe
Merci pour ta réponse Spols. Je n'ai pas vraiment trouvé l'origine du problème, du coup j'ai revu mon code en amont pour m'assurer que lors de l'inscription dans la base, les données soient réellement parfaitement formatées de la même façon.

Je soupçonne une histoire de jeu de caractères, car parfois mon script est appelé depuis une appli de paiement en ligne, et parfois directement depuis le site hôte...