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

Requêtes PostgreSQL Discussion :

Adaptation requête vers v14.4


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 52
    Points : 42
    Points
    42
    Par défaut Adaptation requête vers v14.4
    Bonjour,

    Nous avons un champ Json dans un champs d'une table, ce champ peut contenir plusieurs abribus

    {"CATEGORIE_TAG": [{"string": "TAG_2023"}]}


    dans mon cas je récupère CATEGORIE_TAG via la requête ci dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     substring(s.cf_values,'"CAREGORIE_TAG":\[{"string":"(([a-zA-Z]|[0-9]|(:)|(-)|(_))+)') as tag_categorie
    résultat : TAG_2023

    dans le cadre de la migration vcers v14.4, cette requête remonte une erreur, elle n'est plus supportée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SQL Error [42883]: ERROR: function substring(jsonb, unknown) does not exist
      Indice*: No function matches the given name and argument types. You might need to add explicit type casts.
      Position*: 1272
    Sauriez vous me dire ou est le problème? ou d'autre méthode à faire pour l'extraire


    Je vous remercie par avance

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 039
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 039
    Points : 23 787
    Points
    23 787
    Par défaut
    Bonjour,

    Visiblement, la fonction que vous utilisiez date d'une version de PostgreSQL où vous n'aviez pas encore le type JSON ou JSONB disponible, mais simplement un type TEXT.
    Il existe plusieurs manière d'extraire des éléments d'une colonne JSONB sous PostgreSQL, mais depuis la version 14 de PostgreSQL, il est très facile de le faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT s.cf_values['CAREGORIE_TAG'] as tag_categorie
    ced

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 52
    Points : 42
    Points
    42
    Par défaut
    Bonjour ced,


    merci pour votre retour, votre fonction fonctionne bien mais elle renvoit toute la chaine de caractères [{"string": "TAG_2023"}], je souhaite juste récupérer TAG_2023

    d'avance merci

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 039
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 039
    Points : 23 787
    Points
    23 787
    Par défaut
    Alors comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT (s.cf_values['CAREGORIE_TAG']->0)['string'] as tag_categorie
    ced

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 52
    Points : 42
    Points
    42
    Par défaut
    Bonjour Ced,

    merci beaucoup pour ce retour, c'est mieux, j'obtiens "TAG_2023" . y a-t-il un moyen d'avoir la valeur sans guillemets "" ?

    Je vous remercie par avance

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 039
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 039
    Points : 23 787
    Points
    23 787
    Par défaut
    Il y aura toujours des apostrophes, quelle que soit la méthode employée, pour récupérer la bonne clé dans le JSON...

    ced

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

Discussions similaires

  1. [XL-365] sms Factor adaptation API vers Excel office365
    Par arthour973 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/08/2021, 14h56
  2. [WinPhone] Adaptation APK vers WinPhone
    Par eperalex dans le forum Mon application mobile
    Réponses: 0
    Dernier message: 01/03/2015, 09h35
  3. Adaptation Windows vers linux
    Par thanks33 dans le forum Débuter
    Réponses: 26
    Dernier message: 07/07/2009, 13h22
  4. [RegExp] Adapter une regexp Perl vers du Java
    Par GLDavid dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 22/12/2005, 12h40
  5. Adaptation d'un code TMemo vers TRichEdit : problème de ScrollBars
    Par Droïde Système7 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/01/2005, 15h06

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