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

PostgreSQL Discussion :

requête sans prendre en compte la casse


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 12
    Points : 10
    Points
    10
    Par défaut requête sans prendre en compte la casse
    Voila j'ai une fonction qui prend un argument en paramètre et que j'utilise dans une requête du style :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from book where titre like $1||'%';

    Mais quand je lance une recherche avec une majuscule dans le paramètre la requête ne trouve pas les titres qui commence par une minuscule...

    Voila mon souci j'aimerai que la requête ne prenne pas en compte la casse du paramètre.

    Merci.

  2. #2
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    tu peux utiliser ILIKE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from book where titre ilike $1||'%';
    ca ignore la casse
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

  3. #3
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 211
    Points : 102
    Points
    102
    Par défaut
    Bonjour,

    Je ressors un vieux topic avec une nouvelle question (le sujet du topic correspondant parfaitement à ma question).

    Voilà j'ai cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select r.id_real_estate, a.country from real_estates r JOIN addresses a ON r.id_real_estate=a.id_real_estate WHERE a.country='Finland';
    Ce que je souhaiterais c'est que lorsque je fais cette même requête mais avec 'finland' à la place de 'Finland', j'obtienne le même résultat, bref que ma requête ne fasse pas attention à la casse.

    Merci pour votre aide et bonne soirée.

  4. #4
    jnore
    Invité(e)
    Par défaut
    ce que hpalpha t'a dit fonctionne très bien!

  5. #5
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 211
    Points : 102
    Points
    102
    Par défaut
    Tu veux dire en faisant comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE a.country like '%inland'

  6. #6
    jnore
    Invité(e)
    Par défaut
    Que tu tapes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    WHERE a.country ILIKE 'Finland'
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE a.country ILIKE 'finland'
    Ca fonctionnera.

    Attention:Bien mettre le 'I' devant le Like.

  7. #7
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 211
    Points : 102
    Points
    102
    Par défaut
    Apparement le "ilike" ne marche pas. Je suis sous Oracle Express Edition.

  8. #8
    jnore
    Invité(e)
    Par défaut
    le probleme c'est qu'ici t'es sous le forum Postgresql.

    Je ne pourrai malheureusement pas t'aider sous oracle

  9. #9
    jnore
    Invité(e)
    Par défaut
    Une astuce quand même qui vaut ce qu'elle vaut:

    Dans ton select tu traduis ton champ en majuscule et tu filtre dans ta clause Where sur des caractères en Masjuscule aussi, du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    Select UPPER(champ)
    FROM table
    WHERE champ LIKE UPPER('Finland')

  10. #10
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 211
    Points : 102
    Points
    102
    Par défaut
    Moi ça me va

    Merci à toi

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    J'ai voulu utiliser ILIKE pour faire une recherche sans la casse

    Ma requête initiale était :
    SELECT u FROM Users u WHERE u.nom_users LIKE '%Test%'

    Lorsque je fais :
    SELECT u FROM Users u WHERE u.nom_users ILIKE '%Test%'

    Ca marche seulement j'utilise cette requette en JPA et l'application totale est déployé dans glassfish et avec LIKE ça marchait très bien, seulement avec ILIKE j'ai une erreur au déploiement.

    Deploying application in domain failed; Exception Description: Syntax error parsing the query [listuserByNom: SELECT u FROM Users u WHERE u.nom_users ILIKE :nom], line 1, column 41: unexpected token [ILIKE]. Internal Exception: line 1:41: unexpected token: ILIKE Exception Description: Syntax error parsing the query [listuserByNom: SELECT u FROM Users u WHERE u.nom_users ILIKE :nom], line 1, column 41: unexpected token [ILIKE]. Internal Exception: line 1:41: unexpected token: ILIKE

    Si vous pouvez m'aider ... le but est de faire une recherche sans respecter la casse ...
    Merçi encore

  12. #12
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    ILIKE est propre à PGSQL...et pas très optimisé à priori

    comme proposé plus haut (enfin presque) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT champ
    FROM TABLE
    WHERE  UPPER(champ) LIKE UPPER('Finland')
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  13. #13
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    LIKE [...] ca ignore la casse
    D'ou tenez vous cette idée farfelue ???
    C'est navrant pour un responsable PostGreSQL de répandre des horreurs pareilles !

    Notons qu'il est bien dommage que PostGreSQL ne supporte pas l'opérateur de collation COLLATE (norme SQL) qui permet de rendre sensible ou insensible à la casse ou aux accents les opérations de comparaisons de chaines de caractères, car dans ce cas la requête serait par exemple la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT colonne
    FROM TABLE
    WHERE  colonne = 'Finland' COLLATE French_CI_AI
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  14. #14
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    sauf qu'il parle de ILIKE... qui n'est pas sensible à la casse...pas dans la norme SQL? mais comme on est dans le forum postgresql, on est en droit de se dire qu'on se fera pas allumé...
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/02/2009, 14h27
  2. ne pas prendre en compte la casse ni les accents
    Par pigpen dans le forum JDBC
    Réponses: 14
    Dernier message: 10/05/2007, 14h40
  3. Réponses: 4
    Dernier message: 13/04/2007, 17h32
  4. Réponses: 1
    Dernier message: 01/06/2006, 17h18
  5. Réponses: 2
    Dernier message: 07/07/2004, 17h44

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