现在我想使用PostgreSQL功能改变jsonb型cloumn的价值,现在我有一个函数实现的类型JSON在postgresql中如何更改jsonb类型cloumn中的值?
CREATE OR REPLACE FUNCTION "json_object_set_key"(
"json" json,
"key_to_set" TEXT,
"value_to_set" anyelement
)
RETURNS json
LANGUAGE sql
IMMUTABLE
STRICT
AS $function$
SELECT COALESCE(
(SELECT ('{' || string_agg(to_json("key") || ':' || "value", ',') || '}')
FROM (SELECT *
FROM json_each("json")
WHERE "key" <> "key_to_set"
UNION ALL
SELECT "key_to_set", to_json("value_to_set")) AS "fields"),
'{}'
)::json
$function$;
,但我无法改变JSON类型jsonb,现在我想一个函数“ jsonb_object_set_key“谁可以实现,请帮助我,非常感谢。
你为什么不使用'jsonb_set()'? https://www.postgresql.org/docs/current/static/functions-json.html –
不要使用原始字符串连接来构建JSON。没有理由,然后你不得不担心逃避和引用规则。如果用pl/v8编写,这个函数可能会更简单。 – jpmc26
您使用的是哪个版本的PostgreSQL? – jpmc26