SQL : faire un select indifférent aux caractère spéciaux

WRInaute discret
Bonjour à tous,

Je débute en SQL et je recherche une fonction :

Je veux que la requete extrait tout les résultats pour lesquels le champ lieu contient une valeur, mais je voudrais qu'il ne tienne pas compte des caractères spéciaux.

Exemple :
Si je recherche "ecomusee", je veux qu'il sorte "ecomusee", mais aussi "écomusée" et "Ecomusée".

Quel méthode utiliser pour cela ?

Merci

PS: Si cela interesse quelqu'un, je reprogramme phpmyevents.
 
WRInaute discret
Il faudrait que tu utilses une collation utf8_unicode_ci pour le champs de ta table MySQL en question.

Tes SELECTs devraient normalement être insensibles à la casse et à l'accentuation.
 
WRInaute discret
Les champs sont encodés en latin1_general_ci.
C'est censé être insensible à la casse aussi, isn't it ?

Mon site est en iso, donc je code en iso. Je ne pense pas pouvoir faire autrement ?

La ligne de code est la suivante. $tableAgenda est le nom de la table explorée, manif le champ à explorer, et $non une variable récupérée dans un formulaire.

Code:
$query_tous=mysql_query("select * from $tableAgenda where manif like '%$nom%' and etat=1 order by date_deb"
 
WRInaute accro
LIKE est insensible a la casse, donc ne fait pas la difference entre Maj et min, les histoire d'accent n'ont rien a voir et seront gerer. Par contre on peut rendre LIKE sensible a la casse en passant la chaine en binaire :

Code:
SELECT 'sources' LIKE 'SOURCES';
        retourne 1
SELECT 'sources' LIKE BINARY 'SOURCES';
        retourne 0
 
WRInaute discret
Mon site est en iso, donc je code en iso.
La base peut utiliser n'importe quel codage et html n'importe quel autre.
La sensibilité à la casse peut être déclarée si nécessaire dans le champ de la table.
Dans certains cas, il faut utiliser les fonctions d'encodage/décodage du langage utilisé, mais c'est très rare.
 
WRInaute discret
Dans la rubrique Interclassement, si je choisis
latin1_general_ci (case insensitive) le texte sera insensible à la casse
si je choisis latin1_general_cs il sera sensible à la casse.
Pour utf8 il faut choisir bin ou unicode_ci

Pour répondre à la question posée, il faut effectivement utiliser utf8_unicode_ci et like avec une regexp.
 
WRInaute accro
Dan_A a dit:
Dans la rubrique Interclassement, si je choisis
latin1_general_ci (case insensitive) le texte sera insensible à la casse
si je choisis latin1_general_cs il sera sensible à la casse.

Ca ne repond pas du tout a la question. La sensibilité à la casse NE peut PAS être déclarée dans le champ de la table.

On parle de sensiblité a la casse seulement lorsqu'il s'agit de recherche.

Ensuit tu dis:
>> il faut effectivement utiliser utf8_unicode_ci et like avec une regexp

Ca veux dire quoi au juste tout ca ? On utilise soit LIKE, soit REGEXP mais pas les 2 en meme temps.
 
WRInaute discret
J'ai mis ma base en utf8_general_ci pour les champ que je veux interroger. Ca fonctionne et ca ne pose pas problème de reprendre les résultats dans une page en iso.
 
Discussions similaires
Haut