Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
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
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