我有一些看起来像这样的JSONB数据:
content
id fields
0 {image: 'https://olddomain.com/file.jpg'}
1 {image: 'https://oldodmain.com/file2.jpg'}
我想查找并替换它,就好像它是文本字段一样。我尝试过:
UPDATE content SET fields::text = REPLACE(fields::text, 'https://olddomain.com', 'https://newdomain.com');
但这会出现语法错误。
答案 0 :(得分:2)
强制转换的结果不是l值,因此您无法为其分配值。但是,您可以获取replace
调用的文本结果并将其转换回jsonb
:
UPDATE content
SET fields =
REPLACE(fields::text, 'https://olddomain.com', 'https://newdomain.com')::jsonb;