8768 sujets

Développement web côté serveur, CMS

Bonjour,

La requête SQL suivante:

SELECT * FROM table WHERE colonne REGEXP 'prof[eé]sseur'

Trouve le mot :
Professeur mais pas le mot Profésseur

La collation de ma table est utf8_unicode_ci

Sauriez-vous pourquoi la classe [eé] n'est pas fonctionnel ?

Cordialement
Modifié par zeel36 (08 Apr 2016 - 04:33)
Bonjour et bienvenue sur le forum,

Ça ne fonctionne pas, parce que le mot Profésseur n'existe pas Smiley lol ...

Ok je sors... Oh et puis non...

Tu as essayé directement de chercher "Profésseur" dans ta requête (sans regex) ?
Première chose, assure-toi que ta connexion est bien en UTF-8 aussi. Si besoin ajoute le set names utf8.

Tu as peut-être moyen de simplifier en choisissant une collation AI/CI (accent insensitive / case insensitive). Ca existe et dans ce cas tu pourrais carrément te passer de la regex.
Merci pour vos réponses, en faite j'ai oublié de préciser que dans ma bdd il y a le mot profésseur et professeur.

De plus ma connéxion est bien en UTF-8.

Et j'ai besoin d'utiliser REGEXP au lieu de LIKE dans ma rechérche.

ps : avec LIKE la requête trouve bien le mot profésseur et professeur.

Cordialement
J'ai ouvert PHPMyAdmin, j'ai créer une base test, j'ai créer une table test (utf8_unicode)
j'ai remplis la table avec
-Professeur &&
-Profésseur

WHERE test REGEXP 'prof[eé]sseur'

ceci fonctionne très bien et me donne les deux résultats. t'a requête est donc correct
Pourrais-tu nous expliquer ce que tu as fait pour résoudre le souci ? Ca pourrait servir à d'autres qui auraient le même problème...

ET révise ton orthographe, ça te permettrait sûrement quelques simplifications bienvenues, comme celle de ne pas avoir d'accents là où il n'y en a pas besoin.