如何在pgAdmin中用替换的值更新jsonb列?

文章描述了如何在PostgreSQL中使用`jsonb_set`函数和`REPLACE`操作来更新名为`files`的表中`formats`字段中`thumbnail.url`的值,同时提供了一个示例SQL查询。还提到了另一个更新`BuildInTemplate`字段的例子,展示了在处理JSON数据时的替换策略。
摘要由CSDN通过智能技术生成

我有一个名为files的PostgreSQL表,其中包括一个名为formats的jsonb表。虽然有些行是[null],但其他行具有此结构的对象:

{
  "thumbnail": {
    "ext": ".jpg",
    "url": "https://some-url.com/image01.jpg",
    "name": "image01.jpg",
    //...other properties
  }
}

对于每一行,我想更新thumbnail.url,并用other-url替换some-url

解决方案:

我们可以尝试使用->>获取url的JSON内容值,然后从中替换您的期望值。

因为JSON的url字段可能是字符串类型,所以在转换为JSONB之前,我们需要使用"将其内容化

jsonb_set(targetjsonb,路径文本[],new_valuejsonb[,create_missing布尔值])	
UPDATE files 
SET formats = jsonb_set(formats, '{thumbnail,url}', CONCAT('"',REPLACE(formats->'thumbnail'->>'url','some-url','other-url'),'"')::JSONB);

另外的解决方法:

update public."XXX_DigitalCertificateTemplate" 
set "BuildInTemplate" = REPLACE(
	"BuildInTemplate"::text
	,'} leading to the {Course.CourseAlternativeName}\'
	,'}\'
)::jsonb where "Id" in ('xxxxxb57-ca43-dc33-f665-ce9a4052a791','72324e1d-903c-e378-3977-dff3f84xxxxx');

参考链接:
https://www.5axxw.com/questions/content/d1y9et
PostgreSQL JSONB 使用入门 - 掘金 (juejin.cn)
官方文档:
JSON 函数和操作符

仅供学习参考,如有侵权联系我删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值