PostgreSQL查询:如何从同表现有JSON值设置列值
问题解决办法
你的查询不生效主要有两个问题:
1. NULL值判断错误
PostgreSQL中不能用=来判断NULL,因为NULL代表未知值,任何与NULL的相等比较结果都是NULL(无法满足条件)。必须用IS NULL来检测NULL值。
2. INSERT语句列名不匹配
你提供的INSERT语句里用了single_item列,但表结构里对应的目标列是column_name,这会导致插入失败,后续更新自然找不到对应数据。
修正后的完整操作步骤:
- 确保表结构和插入语句正确:
CREATE TABLE table_name ( data jsonb null, column_name text null ); INSERT INTO table_name (data, column_name) VALUES ('{"object_key_name": "hello_world"}', null);
- 执行正确的UPDATE语句:
UPDATE table_name SET column_name = data ->> 'object_key_name' WHERE column_name IS NULL;
执行完成后,column_name列会被填充为JSON字段里object_key_name对应的值,后续直接访问该列即可,无需再解析JSON。
内容的提问来源于stack exchange,提问作者user3585522
相关产品推荐
相关产品推荐

