我正在尝试更新以下内容 y.data
,这是一个jsonb类型的列,当前包含空值。这个 ||
命令似乎无法合并在一起 y.data
与 x.data
什么时候 x.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;
修改此查询以支持更新的最佳方式是什么 x.data
对于同时具有现有值或为空的行?
2条答案
按热度按时间gupuwyp21#
连接任何与
null
生产null
. 你可以用coalesce()
或条件逻辑来解决这个问题:或:
请注意,没有必要明确铸造
x.data
至jsonb
,因为这是一个jsonb
列已存在。v1uwarro2#
在sql中,最好假设将null添加到某个对象会使整个对象为null。要解决上述问题,请尝试以下操作:
聚结物给身体提供了一些东西
||
就是这样NOT NULL
. 如果你想要一些不同的东西,那么修改问题来表示。