我有一些 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');
但是这是一个语法错误。
最佳答案
强制转换的结果不是左值,您不能为其赋值。但是,您可以获取 replace
调用的文本结果并将其转换回 jsonb
:
UPDATE content
SET fields =
REPLACE(fields::text, 'https://olddomain.com', 'https://newdomain.com')::jsonb;
关于sql - PostgreSQL 在 JSONB 数据中以文本形式查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51005106/