J'ai une colonne jsonb avec les données suivantes :
{"oz": "2835", "cup": "229", "jar": "170"}
J'ai le numéro de clé 0
qui représente le premier élément "oz". Comment puis-je extraire cette valeur en utilisant le 0
?
Je pense à quelque chose de similaire à :
SELECT units->[0] as test
Je n'ai que l'ID de clé pour référencer ces données. Je n'ai pas le nom de clé "oz".
Cela ressemble à une idée horrible. Mais vous pouvez toujours créer une fonction pour implémenter cette horrible idée :
create function jsonb_disaster(jsonb,int) returns jsonb language SQL as $$
select value from jsonb_each($1) with ordinality where ordinality=1+$2
$$;
select jsonb_disaster('{"oz": "2835", "cup": "229", "jar": "170"}',0);
jsonb_disaster
----------------
"2835"
Vous pouvez également créer votre propre opérateur pour conclure cette catastrophe :
create operator !> ( function = jsonb_disaster, leftarg=jsonb, rightarg=int);
select '{"cup": "229", "jar": "170", "oz": "2835"}' !> 1;
?column?
----------
"229"
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots