gpt4 book ai didi

json - Postgres JSON 等效于 HSTORE 减法运算符

转载 作者:行者123 更新时间:2023-11-29 12:05:26 24 4
gpt4 key购买 nike

Postgres 的 hstore 扩展有一个简洁的减法运算符:

hstore - text[]

hstore - hstore

在第一种情况下,它会删除在字符串数组中找到键的键/值对:在第二种情况下,它会从第一个 hstore 中删除出现在第二个 hstore 中的所有匹配键/值对。

新的 jsonb 数据类型似乎不存在此运算符。是否有一种简单的方法来执行这些任务?

最佳答案

关键是 json_each()功能,以及 PostgreSQL 中手动构建 json 值的能力。

这是一个可以处理 json - text[] 的函数:

CREATE OR REPLACE FUNCTION "json_object_delete_keys"(
"json" json,
VARIADIC "keys_to_delete" TEXT[]
)
RETURNS json
LANGUAGE sql
IMMUTABLE
STRICT
AS $function$
SELECT COALESCE(
(SELECT ('{' || string_agg(to_json("key") || ':' || "value", ',') || '}')
FROM json_each("json")
WHERE "key" <> ALL ("keys_to_delete")),
'{}'
)::json
$function$;

要处理 json - json 情况,您只需更改 WHERE 子句:

    WHERE "json"->>"key" <> ("remove"->>"key")),

关于json - Postgres JSON 等效于 HSTORE 减法运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23979872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com