SQL : faire un select indifférent aux caractère spéciaux
10 messages
• Page 1 sur 1
- Sainte-Rose
- WRInaute discret

- Messages: 87
- Inscription: 29 Jan 2007
SQL : faire un select indifférent aux caractère spéciaux
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.
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.
- Selection A
- WRInaute occasionnel

- Messages: 279
- Inscription: 14 Mar 2005
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.
Tes SELECTs devraient normalement être insensibles à la casse et à l'accentuation.
- Sainte-Rose
- WRInaute discret

- Messages: 87
- Inscription: 29 Jan 2007
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.
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: Tout sélectionner
$query_tous=mysql_query("select * from $tableAgenda where manif like '%$nom%' and etat=1 order by date_deb"
-

KOogar - WRInaute accro

- Messages: 3974
- Inscription: 16 Nov 2004
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: Tout sélectionner
SELECT 'sources' LIKE 'SOURCES';
retourne 1
SELECT 'sources' LIKE BINARY 'SOURCES';
retourne 0
- Dan_A
- WRInaute discret

- Messages: 183
- Inscription: 21 Déc 2005
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.
- Dan_A
- WRInaute discret

- Messages: 183
- Inscription: 21 Déc 2005
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.
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.
-

KOogar - WRInaute accro

- Messages: 3974
- Inscription: 16 Nov 2004
Dan_A a écrit: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.
- Sainte-Rose
- WRInaute discret

- Messages: 87
- Inscription: 29 Jan 2007
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.
10 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- title et caractère spéciaux
- lecture de caractère spéciaux
- Caractère spéciaux dans un fichier .js
- Url rewrite et caractére spéciaux
- Problème caractère spéciaux pour onglets
- meta tag et caractère HTML spéciaux
- URL Rewriting et caractère spéciaux (façon Wikipedia)
- Probleme select SQL
- Optimisation SQL - Inner Join (3) ou 3 x Select ?
- Requete sql INSERT INTO + SELECT (php)
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Outils Google pour les entreprises : Google Agency Toolkit - 01-03-2009
- De la publicité ciblée dans les cartes de Google Local - 31-03-2006
- Les adresses IP de Google et Googlebot - 05-10-2006
- Le marketing viral au service du référencement - 11-10-2004
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
