gpt4 book ai didi

sql - 在 PostgreSQL 中使用 NULL 值更新 JSONB 列

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

我正在尝试更新以下 y.data,这是一个当前包含 NULL 值的 JSONB 类型列。当 x.data 时,|| 命令似乎无法将 y.datax.data 合并在一起一片空白。当 x.data 包含 JSONB 值时它工作正常。

这是一个示例查询。

UPDATE x
SET x.data = y.data::jsonb || x.data::jsonb
FROM (VALUES ('2018-05-24', 'Nicholas', '{"test": "abc"}')) AS y (post_date, name, data)
WHERE x.post_date::date = y.post_date::date AND x.name = y.name;

修改此查询以支持更新具有现有值或为 NULL 的行的 x.data 的最佳方法是什么?

最佳答案

将任何内容与 null 连接会生成 null。您可以使用 coalesce() 或条件逻辑来解决此问题:

SET x.data = COALESCE(y.data::jsonb || x.data, y.data::jsonb)

或者:

SET x.data = CASE WHEN x.data IS NULL 
THEN y.data::jsonb
ELSE y.data::jsonb || x.data
END

请注意,无需将 x.data 显式转换为 jsonb,因为它已经是一个 jsonb 列。

关于sql - 在 PostgreSQL 中使用 NULL 值更新 JSONB 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62640403/

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