【发布时间】:2017-04-20 15:16:40
【问题描述】:
我正在寻找一种使用键数组从 JSONB 对象中提取值的方法。这是我的 JSON:
{
"Foo1": 1,
"Foo2": 2,
"Foo3": 3,
"Foo3": 4
}
我有一个名为“@Fields”的变量,它的类型是 TEXT[]。该数组包含我想从对象中提取的键的名称,即。 {'Foo1','Foo2'}。结果应该是:
{
"Foo1": 1,
"Foo2": 2
}
我使用的是 JSONB_EXTRACT_PATH("Data"::jsonb, "@Fields") 但是似乎该函数需要将路径作为单独的参数传递,而我想以某种方式给它一个数组。这是它在我的查询中的样子:
SELECT
"UserID",
(
CASE
WHEN ARRAY_LENGTH("@Fields", 1) = 0 THEN "Data"
ELSE JSONB_EXTRACT_PATH("Data", "@Fields")
END
) AS "Data"
FROM
UserMeta
我怀疑我必须使用 JSON_EACH 或类似的东西?
【问题讨论】:
标签: sql json postgresql