Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/09/2011, 16h58   #1
Nouveau Membre du Club
 
Homme
Inscription : mai 2011
Messages : 205
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 205
Points : 33
Points : 33
Par défaut Ne pas différencier majuscule de minuscule

Bonjour,

Je cherche à faire l'affichage de détails de personnes d'une table, mon probleme c'est que ces noms peuvent etre écrit en minuscule ou en majuscule ou bien combiné et quand je faisais cette requette
Code :
SELECT * FROM Personne WHERE Nom LIKE '%Toto%'
il m'affiche les noms qui contienenent Toto mais c'est que je veux qu'il m'affiche en plus par exemple ceux qui contiennent TOTO, toto....

Merci
Naceur84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 17h06   #2
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Saluton,
Bizarre, je croyais que LIKE n'était pas sensible à la casse. La colonne Nom a-t-elle un attribut BINARY ?
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 17h16   #3
Nouveau Membre du Club
 
Homme
Inscription : mai 2011
Messages : 205
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 205
Points : 33
Points : 33
Oui c'est comme tu as dis Maljuna Kris j'ai l'attribut entrelacement à utf8_bin mais en essayant de le changer( le laisser vide) la mise à jour ne se fait pas mais en le changeant en un autre type utf8_tur la mise à jour ca se fait et le résultat de la requête est bon est ce qu'il y a une explication
Naceur84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 19h58   #4
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 3 880
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 39
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 3 880
Points : 7 654
Points : 7 654
LIKE n'est pas sensible à la casse, mais si la base ou le serveur a été configuré Case Sensitive, effectivement les recherches peuvent être impactées.


Ce que tu peux faire, c'est justement d'utiliser les minuscule ou majuscule dans la recherche, style :
Code :
SELECT * FROM Personne WHERE ucase(Nom) LIKE '%TOTO%'
ou
Code :
SELECT * FROM Personne WHERE lcase(Nom) LIKE '%toto%'
__________________
Sevyc64 --- Le partage est notre force

NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS
sevyc64 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 09h19   #5
Nouveau Membre du Club
 
Homme
Inscription : mai 2011
Messages : 205
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 205
Points : 33
Points : 33
Salut sevyc64 quand tu disais
Citation:
mais si la base ou le serveur a été configuré Case Sensitive
ou je peux modifier la configuration si c'est possible

Tandis que pour ta réponse
Code :
SELECT * FROM Personne WHERE ucase(Nom) LIKE '%TOTO%'
ca ne me rajoute pas grande chose car ma question s'était si le nom contient à la fois de caractère minuscule et majuscule et pas seulement miniscule ou majuscule
Naceur84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 09h28   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 028
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 028
Points : 18 321
Points : 18 321
Envoyer un message via MSN à CinePhil
La fonction UCASE passe tous les caractères de la chaîne en majuscules, que celle-ci en contienne ou pas. Du coup la comparaison peut se faire de majuscules à majuscules donc sans tenir compte de la casse.
Si la chaîne de caractères à tester peut contenir des minuscules tu fais ceci :
Code :
WHERE UCASE(Nom) LIKE UCASE('%ta_variable%')
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 09h29   #7
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 3 880
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 39
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 3 880
Points : 7 654
Points : 7 654
Citation:
Envoyé par Naceur84 Voir le message
Salut sevyc64 quand tu disais ou je peux modifier la configuration si c'est possible
Normalement ça se paramètre à la création du serveur ou de la base, c'est ce que l'on appelle le Classement (ou Collation). Je ne connais pas les conséquences d'un changement de classement après coup.

Citation:
Tandis que pour ta réponse
Code :
SELECT * FROM Personne WHERE ucase(Nom) LIKE '%TOTO%'
ca ne me rajoute pas grande chose car ma question s'était si le nom contient à la fois de caractère minuscule et majuscule et pas seulement miniscule ou majuscule
Ben normalement, quoique contienne ton cahamp nom, ucase(nom) doit le transformer en tout majuscule pour ensuite le comparer à ton filtre LIKE '%TOTO%', tout en majuscule donc lui aussi.
Donc tu dois récupérer les noms tout en minuscules, tout en majuscule ou contenant minuscules et majuscule.
__________________
Sevyc64 --- Le partage est notre force

NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS
sevyc64 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 09h35   #8
Nouveau Membre du Club
 
Homme
Inscription : mai 2011
Messages : 205
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 205
Points : 33
Points : 33
Je suis désolé vous avez tout a fait raison j'ai mal analysé le truc

PS: Je viens de me réveiller
Naceur84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h49.


 
 
 
 
Partenaires

Hébergement Web