我以为我已经对此进行了排序,而且看起来非常简单...但我正在尝试运行 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);
你的问题是对null的误解。标准关系运算符(=、<>、>、<, ...) 不对 null 进行操作,任何比较运算符都会返回 null 作为结果。这也适用于算术运算符。当涉及 null 时,必须使用
is null
或 is not null
或也转换)。 update table_name
set column_name = data ->> 'object_key_name'
where column_name is null;