Problème LIKE sans accent

St3phen76 Messages postés 4 Date d'inscription mardi 16 août 2011 Statut Membre Dernière intervention 17 août 2011 - 16 août 2011 à 12:04
St3phen76 Messages postés 4 Date d'inscription mardi 16 août 2011 Statut Membre Dernière intervention 17 août 2011 - 17 août 2011 à 10:22
Bonjour,

Je suis confronté à un problème de recherche avec LIKE.

Dans ma base, j'ai une valeur "été" (text/UTF8_general_ci)

Dans mon code je désire chercher les occurrences "ete" dans ma base.

Fonctionne avec "été", "éTé"... mais pas avec "ete".

J'ai regardé du côté des regex mais rien...

Avez-vous la solution à mon problème svp ?

6 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
16 août 2011 à 12:14
Bonjour,

Je te conseil une solution assez simple, pour tu remplaces les é par des _ ta requete devient :

SELECT * FROM table WHERE champ LIKE _T_


Je déplace vers le forum SQL
0
St3phen76 Messages postés 4 Date d'inscription mardi 16 août 2011 Statut Membre Dernière intervention 17 août 2011
16 août 2011 à 12:37
Pour être plus précis, dans ma table j'ai "Carte mère"

Dans ma recherche :

SELECT * FROM reference WHERE nom LIKE "carte mere"


Si je remplace les "e" par "_" :

SELECT * FROM reference WHERE nom LIKE "cart_ m_r_"


Ca ne fonctionne pas...

Merci pour votre réponse ;)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
16 août 2011 à 13:15
Qu'est ce que tu entends par ca ne marche pas. L'utilisation des _ fonctionne, tu peux regarder ce tutoriel : http://www.techonthenet.com/sql/like.php
0
St3phen76 Messages postés 4 Date d'inscription mardi 16 août 2011 Statut Membre Dernière intervention 17 août 2011
16 août 2011 à 13:45
Ca ne retourne rien alors que ça devrait retourner "Carte mère" non ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
16 août 2011 à 18:06
Non, tu as une majuscule à Carte mère, utilises la requete :
SELECT * FROM reference WHERE UPPER(nom) LIKE "CART_ M_R_"
0
St3phen76 Messages postés 4 Date d'inscription mardi 16 août 2011 Statut Membre Dernière intervention 17 août 2011
17 août 2011 à 10:22
Ca ne me retourne rien... je dois avoir un problème d'encodage ou je ne sais quoi.

J'ai fais des recherches, j'en suis arrivé ici :
SELECT * FROM reference WHERE REPLACE(nom,"è","e") LIKE "carte mere"

C'est pas terrible mais ça fonctionne.
Évidemment, une fonction PHP me met en forme ma recherche ("carte mere" ici en l’occurrence)

Il me manque juste le remplacement de tous les caractères :
SELECT * FROM reference WHERE REPLACE(nom,"aàäâeéèêëiïîoôöuùûücç","aaaaeeeeeiiiooouuuucc") LIKE "carte mere"

Je suis bloqué ici (normal que ça ne fonctionne pas, REPLACE() ne remplace qu'un caractère)

J'ai vu sur le net la fonction TRANSLATE() mais apparemment c'est sur Oracle et non MySQL.

Merci pour les infos et ton aide en tout cas !
0
Rejoignez-nous