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

Requêtes PostgreSQL Discussion :

select contenant une Regex qui ne retourne rien


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre du Club
    select contenant une Regex qui ne retourne rien
    Bonjour,

    une question simple j'imagine pour vous :

    J'ai une table dont un des champs est de type text.

    Voici une requete réalisée qui confirme que le pattern fonctionne :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    'untitre/2' ~* 'untitre/[0-9]' => renvoie true


    Mais dès qu'on est dans la table :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    select thefield from latable where thefield ~* 'untitre/2'


    ne renvoie aucun résultat.
    Et pourtant, il y a bien 1 ligne qui contient un champs thefield égal à untitre/[0-9]

    Est-ce que la requete est mal construite ?

    Merci.

  2. #2
    Rédacteur

    Ceci marchant parfaitement sou PG 12 :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE T_MaTable (MaColonne VARCHAR(256));
     
    INSERT INTO T_MaTable VALUES ('untitre/2');
     
    SELECT * FROM T_MaTable where MaColonne ~* 'untitre/2'


    Vous devez avoir d'autres caractères (peut être non imprimables) dans votre chaine de caractères…

    Transtypez là en binaire pour voir…

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  3. #3
    Membre du Club
    Bonjour,
    merci pour la réponse, mais le but est que dans la table il y ait une expression regulière.

    Dans l'exemple que vous donnez, est-ce que vous pouvez plutôt insérer :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE T_MaTable (MaColonne VARCHAR(256));
     
    INSERT INTO T_MaTable VALUES ('untitre/[0-9]');
     
    SELECT * FROM T_MaTable where MaColonne ~* 'untitre/2'


    et me dire ce que vous avez comme résultat ? Parce que moi cela ne renvoie rien. Et pourtant, untitre/2 devrait être reconnu dans untitre/[0-9] n'est ce pas ?

    J'ajoute aussi que ce site qui teste les regex, lui, donne un résultat :
    https://www.regexplanet.com/share/in...re=yyyyutbm46r

    Merci.

  4. #4
    Modérateur

    Il suffit d'intervertir votre colonne contenant l'expression régulière et la constante :
    https://www.db-fiddle.com/f/ff8TPtLn...GCvLN8UYzoMA/0

  5. #5
    Membre du Club
    Bonjour,
    nickel, je réalisais la requete à l'envers en fait.
    Effectivement, dans ce sens-là, cela renvoie un résultat.
    Sujet clos.
    Merci bcp

###raw>template_hook.ano_emploi###