我有一个带有jsonb列的表,我想将每个记录迁移到一个新的模式。
旧模式:{"foo": "bar"}
新模式:{"foo": {"value": "bar"}
bar
的值因行而异,我想保留这个值。我需要某种方法从每个记录中查找foo的值。
WITH data AS (
SELECT id AS id, col -> 'foo' AS foo
FROM t
) UPDATE t SET col = jsonb_set('{"foo": {"value": ""}}', '{foo,value}', SELECT foo FROM data WHERE data.id = t.id);
字符串
我在Postgres 11.21中遇到了这个错误。
ERROR: syntax error at or near "SELECT"
LINE 4: ...jsonb_set('{"foo": {"value": ""}', '{foo,value}', SELECT foo...
型
2条答案
按热度按时间dbf7pr2w1#
不需要CTE,并且您可以移动当前内容而无需子查询:
字符串
yzuktlbb2#
它需要在select周围加上括号:
字符串