Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 18/06/2018 12:22:48
- damalaan
- Membre
[RESOLU]requete sur un champs jsonb
Bonjour,
je dois faire une requête sur une table dont un des champs est en jsonb avec un stockage du style :
client, champjson
1234, [{"a": "", "b": "", "c": "", "d": [19, 38, 34, 13], "e": ""}]
4321,[{"a": "", "b": "", "c": "", "d": [36], "e": ""}]
je souhaite que le résultat de ma requête soit ainsi :
1234,19
1234,38
1234,34
1234,13
4321,36
j'ai donc tenté une requête comme ceci :
select client, champjson->'d' from matable
et j'obtien
1234,NULL
4321,NULL
merci de votre aide
Dernière modification par damalaan (18/06/2018 15:14:11)
Hors ligne
#2 18/06/2018 13:59:51
- dverite
- Membre
Re : [RESOLU]requete sur un champs jsonb
Dans les 2 exemples montrés, champjson commençe par un crochet, qui signale le début d'un tableau.
C'est un tableau contenant un objet alors que la notation champjson->'d' retourne un champ d'un objet, pas d'un tableau d'objets.
Moralité il faut commençer par sortir l'élement du tableau, par exemple avec la fonction json_array_elements()
select json_array_elements($$[{"a": "", "b": "", "c": "", "d": [19, 38, 34, 13], "e": ""}]$$)->'d';
?column?
------------------
[19, 38, 34, 13]
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
#3 18/06/2018 14:45:48
- damalaan
- Membre
Re : [RESOLU]requete sur un champs jsonb
Yes merci
c'est un peu sportif cette histoire, voilà le code final pour extraire tous les éléments
select client , json_array_elements_text(json_array_elements(champjson::json)->'d')::int as pb FROM matable
par contre il faut "retyper" le jsonb en json sinon ça ne fonctionne pas
Hors ligne
#4 19/06/2018 09:30:01
- duple
- Membre
Re : [RESOLU]requete sur un champs jsonb
Par curiosité, quelle est le réel intérêt de stoquer les données ainsi dans un champs json, la modèlisation ne pourrait être autrement ?
Hors ligne
#5 19/06/2018 09:33:12
- damalaan
- Membre
Re : [RESOLU]requete sur un champs jsonb
Par curiosité, quelle est le réel intérêt de stoquer les données ainsi dans un champs json, la modèlisation ne pourrait être autrement ?
sais pas !!! dans ce cas je ne suis qu'utilisateur !!
Hors ligne
Pages : 1