什么是 Postgres 查询,用于根据同一表中的现有 json 值设置列值

问题描述 投票:0回答:1

我以为我已经对此进行了排序,而且看起来非常简单...但我正在尝试运行 PostgresSQL 查询来从存储在另一个项目中的 JSON 项目中复制一个值,其中当前有一个 NULL 值。

这似乎有道理,但没有骰子:

update
  table_name
set
  column_name = data ->> 'object_key_name'
where
  column_name = null;

理想情况下,查询将允许直接访问专用列中的 JSON 值,而不必执行 JSON 过滤器。我没有运气修改我的查询,因为从我看来这应该可行......

我相信,一个示例表格是这样的:

CREATE TABLE table_name (
    data jsonb null,
    column_name text null
)
INSERT INTO table_name (data, single_item)
VALUES ('{"object_key_name": "hello_world"}', null);
json postgresql jsonb
1个回答
0
投票

你的问题是对null的误解。标准关系运算符(=、<>、>、<, ...) 不对 null 进行操作,任何比较运算符都会返回 null 作为结果。这也适用于算术运算符。当涉及 null 时,必须使用

is null
is not null
或也转换)。
对于您的问题,您需要 is null:(参见 demo

update table_name
   set column_name = data ->> 'object_key_name'
 where column_name is null;
© www.soinside.com 2019 - 2024. All rights reserved.