如何使用 Postgres 中的动态键从 JSON 获取值
How to get value from JSON with dynamic key in Postgres
以下查询从 jsonb
对象中获取所需的所有键名。基本上,从名为 'objects'.
的列中获取包含 'foo' 的所有键名
SELECT keys
FROM (
SELECT jsonb_object_keys(objects) as keys
from table
) as testvalues
WHERE keys LIKE '%foo%';
获得键名集后,我想按如下方式访问该对象的 status
字段
SELECT objects->'hello_foo'->'status' FROM table
但是,我仍然找不到一种方法来遍历第一个查询中的键名集并动态访问 status
字段。
最好的实施方式是什么?
您可以使用 jsonb_each()
将所有元素提取为 key/value 对。然后您可以按 key
过滤并访问 value
对象:
SELECT
*,
objects.value -> 'status'
FROM
t,
jsonb_each(mydata) objects
WHERE objects.key::text LIKE '%foo%'
以下查询从 jsonb
对象中获取所需的所有键名。基本上,从名为 'objects'.
SELECT keys
FROM (
SELECT jsonb_object_keys(objects) as keys
from table
) as testvalues
WHERE keys LIKE '%foo%';
获得键名集后,我想按如下方式访问该对象的 status
字段
SELECT objects->'hello_foo'->'status' FROM table
但是,我仍然找不到一种方法来遍历第一个查询中的键名集并动态访问 status
字段。
最好的实施方式是什么?
您可以使用 jsonb_each()
将所有元素提取为 key/value 对。然后您可以按 key
过滤并访问 value
对象:
SELECT
*,
objects.value -> 'status'
FROM
t,
jsonb_each(mydata) objects
WHERE objects.key::text LIKE '%foo%'