IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[PostGre SQL] Recherche sur un champs


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut [PostGre SQL] Recherche sur un champs
    Bonjour,

    Je souhaite faire une recherche sur un champ mais sans tenir compte de la casse et des accents.
    Pour la casse, il y a plusieurs solutions qui fonctionnent plutot bien telles que ILIKE ou ~* mais c'est les accents en UNICODE qui posent problème. De plus, beaucoup de méthodes comme LOWER, TO_ASCII... ne les gèrent pas correctement.

    Mon SGBDR : PostgreSQL 8 en UNICODE
    Language de dev : PHP 5 en UTF-8

    J'ai déjà ouvert un sujet dans le forum PostgreSQL mais à priori cela relève plus du SQL que du SGBD d'où ma question ici.

    Je suis prenneur de n'importe quelle solution sachant que je travaille pas que en français (ex: Japonais).

  2. #2
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    Je ne suis pas un grans spécialiste de postgres.
    Mais je dirais que les expressions regulieres peuvent t'aider.
    Avec le mot clés similar to. Je ne sais pas a partir de quelle version ca marche.
    http://www.postgresql.org/docs/8.1/s...-matching.html

  3. #3
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    J'ai tester une requête du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT titre FROM table WHERE titre SIMILAR TO '%elem%';
    Mais le fonctionnement est identique à LIKE c'est-à-dire non-sensible à la casse et les accents ne passent pas non plus.
    Néanmoins, cet opérateur doit être plus puissant (car sinon il n'aurait pas été ajouté dans la norme SQL99) mais j'avoue ne pas trop savoir quoi en faire pour obtenir le résultat escompté.

    Aurais-tu un exemple pour me mettre sur la voie ?

    ---------------------------------------

    **Edit : Je ne sais pas ce que j'ai touché mais ça fonctionne presque !
    Avec LIKE et SIMILAR TO les accents sont bien pris en compte.
    Avec ILIKE et ~* J'obtient les accents et la casse.

    J'ai du faire une erreur quelque part (le vendredi est difficile )

    J'utilise donc pour l'instant la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT titre FROM table WHERE titre ~* '.*$titreRecherché.*';
    Ce qui me permet, pour obtenir le mot "Noël", de faire la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT titre FROM table WHERE titre ~* '.*nOËl.*';

    Maintenant, j'aimerai bien obtenir le même résultat mais en recherchant le mot "noel" (sans accent). Cela est-il possible ??

  4. #4
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    Personne a une idée ?

Discussions similaires

  1. requete recherchant sur 2 champs
    Par ozzmax dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/09/2006, 19h07
  2. Recherche sur un champ et recherche suivant
    Par DurDur dans le forum Access
    Réponses: 4
    Dernier message: 10/03/2006, 23h17
  3. Recherche sur un champ LONG
    Par Endymion222 dans le forum Oracle
    Réponses: 14
    Dernier message: 29/11/2005, 14h31
  4. [SQL] dictinct sur plusieurs champs
    Par lapartdombre dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/11/2005, 15h11
  5. Réponses: 2
    Dernier message: 30/11/2004, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo