Bonjour,
Je viens de rencontrer un problème sur un site avec un acces user.
J'ai 2 utilisateurs qui ont le même login enfin presque gicher et GIcher.

lorsque je fais un where login = 'gicher', il me sort les 2.
Comment respecter les majuscules et minuscules ?

11 réponses


Huggy
Réponse acceptée

C'est la collation qui détermine si la comparaison se fait en tenant compte de la casse
La collation de ton champs doit se terminer par _ci (case insensitive)
Utilises plûtot une collation _bin comme Utf8_bin ou Latin1_bin

massadu33
Réponse acceptée

Il faut changer les propriétés de ton champs login en BINARY. Si tu n'a rien touché avant tu devrais être en latin1_general_ci. Change cette propriété et passe la en latin1_bin.

cid5420
Auteur
Réponse acceptée

en fait j'ai juste modifié le collate du champs login en utf8_bin et ça fonctionne parfaitement

Salut, j'ai trouvé 2 pistes sur un autre forum, un membre suggère de faire une requète du style:

SELECT * FROM matable WHERE nom = 'Dji-Bi' collate utf8_bin

ou alors de changer l'encodage de ta table.

cid5420
Auteur

je comprend pas, ça ne me renvoie aucun resultat !

Quelle est la collation d'origine ?
pas sûr qu'on puisse passer de Latin en Utf8 sans un convert

cid5420
Auteur

en fait c'est un point que je n'ai jamais abordé, première foi que je suis confronté à ce problème. J'ai essayé de faire

select * from ftth_user where login = 'test' collate utf8_bin

la collation d'origine est utf8 !

cid5420
Auteur

pourquoi pas utf8 ?

utf8 c'est le charset, la collation c'est utf8xxx ou Latin1xxx
essaye ceci

select * from ftth_user where login = 'test' collate utf8mb4_bin

c'est l'utf8 sur 4 octets (pour les chinois)

Donc ma première réponse était la bonne
merci de valider ma réponse

cid5420
Auteur

oups desolé je viens de modifier ! Merci pour ton aide