如何仅使用键号id获取jsonb数据的值?

How to get the value of jsonb data using only the key number id?

我有一个包含以下数据的 jsonb 列:

{"oz": "2835", "cup": "229", "jar": "170"}

我有代表第一项“oz”的密钥编号 0。如何使用 0?

提取此值

我的想法类似于:

SELECT units->[0] as test

我只有密钥 ID 来引用此数据。我没有密钥名称“oz”。

听起来是个糟糕的主意。但是你仍然可以创建一个函数来实现这个可怕的想法:

create function jsonb_disaster(jsonb,int) returns jsonb language SQL as $$ 
    select value from jsonb_each() with ordinality where ordinality=1+
$$;


select jsonb_disaster('{"oz": "2835", "cup": "229", "jar": "170"}',0);
 jsonb_disaster 
----------------
 "2835"

您也可以创建自己的操作员来结束这场灾难:

create operator !> ( function = jsonb_disaster, leftarg=jsonb, rightarg=int);

select '{"cup": "229", "jar": "170", "oz": "2835"}' !> 1;
 ?column? 
----------
 "229"