如何仅使用键号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"
我有一个包含以下数据的 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"