majuscule / minuscule

Par cid5420, il y a 10 ans


Base de données MySQL

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, il y a 10 ans

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

julienb, il y a 10 ans

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, il y a 10 ans

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

Huggy, il y a 10 ans

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

cid5420, il y a 10 ans

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 !

massadu33, il y a 10 ans

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, il y a 10 ans

pourquoi pas utf8 ?

Huggy, il y a 10 ans

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)

cid5420, il y a 10 ans

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

Huggy, il y a 10 ans

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

cid5420, il y a 10 ans

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