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 :

[DEBUTANT] Postgresql et underscore


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Par défaut [DEBUTANT] Postgresql et underscore
    Bonjour,
    J'ai une colonne filename avec des noms assez variés contenant un underscore du type : monfichier_200710.txt ou monfichieraa_200710.txt ou encore monfichierxx_200710.txt.
    Je désire faire un :
    SELECT filename FROM table
    WHERE filename NOT LIKE 'monfichier_';
    Pour avoir uniquement les monfichieraa_200710.txt et les monfichierxx_200710.txt mais vu que le underscore est un caractère réservé, il me retourne 0 réponse et, évidemment, le LIKE 'monfichier_' me les retourne tous.
    Existe-t-il un REGEX pour que le underscore ne soit pas vu comme un caractère spécial de Postgresql ?
    J'utilise un Postgresql 8.0.

    Merci beaucoup pour votre aide.
    Cordialement.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Par défaut
    Il faut placer un \ avant le _ comme l'indique la documentation :
    http://www.postgresql.org/docs/8.0/s...FUNCTIONS-LIKE

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Par défaut
    Merci pour la réponse mais j'ai déjà essayé avec un '\_', ça ne fonctionne pas. J'ai aussi essayé de mettre un ESCAPE '' pour dédifférencier le underscore et essayé '%monfichier\137%' pour la valeur en octal de l'underscore mais ça ne passe pas non plus .

    Merci pour l'aide.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Par défaut
    Je vous envoie ce que j'ai essayé si ça peut vous aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    test=# select * from table1 where label like '%valeur\_%';
     id |   label    
    ----+------------
      1 | valeur_1  
      2 | valeur_2  
      3 | valeur_3  
      4 | valeuraa_3
      5 | valeuraa_5
      6 | valeurxx_6
    (6 rows)
    ou même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    test=# select * from table1 where label similar to '%valeur\_%';
     id |   label    
    ----+------------
      1 | valeur_1  
      2 | valeur_2  
      3 | valeur_3  
      4 | valeuraa_3
      5 | valeuraa_5
      6 | valeurxx_6
    (6 rows)
    Il me retourne la totalité alors que je ne veux que les 3 premières valeurs. Idem lorsque j'essaie en octal ou avec le ESCAPE ''
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    test=# select * from table1 where label similar to '%valeur\137%';
     id |   label    
    ----+------------
      1 | valeur_1  
      2 | valeur_2  
      3 | valeur_3  
      4 | valeuraa_3
      5 | valeuraa_5
      6 | valeurxx_6
    (6 rows)

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Par défaut
    essaye en répétant deux fois \
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table1 where label like '%valeur\\_%';

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Par défaut
    Ca a l'air de bien fonctionner avec le '\\_'.
    Merci beaucoup pour l'aide !

    (C'est tout de même étrange qu'il faille mettre 2 antislashes, sous MySQL, j'ai juste eu à en mettre qu'un seul et cela suffisait.)

    Bien cordialement.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Par défaut
    La seule solution que je vois est de spécifier le caractère d'échappement, de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM table1 WHERE label LIKE '%valeur|_%' ESCAPE '|';

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Par défaut
    Oui, cette méthode aussi fonctionne très bien.
    Je vous remercie beaucoup pour votre aide.

    Cordialement.
    Kane.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. debutant:quelques questions sur postgresql
    Par kam81 dans le forum Administration
    Réponses: 3
    Dernier message: 08/12/2008, 03h04
  2. [Debutant Postgresql 7.2] unload sur postgres
    Par tonymontana4192 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/04/2007, 21h44
  3. [debutant]Code d'erreur Postgresql
    Par madtroll dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 30/04/2006, 11h36
  4. [Debutant] Installation du PostGreSQL
    Par mehdi_swatch dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 07/04/2006, 16h34
  5. [debutant] pb install postgresql sur suse 10
    Par speedwoody dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 01/02/2006, 17h37

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