如何设置手机网站主页,东莞营销型网站设计,小白怎么做网站赚钱,网站开发与设计的总体思想上一篇提到怎么替换jsonb#xff0c;链接如下#xff1a;
如何在pgAdmin中用替换的值更新jsonb列#xff1f;-CSDN博客
那么当jsonb嵌套jsonb应该怎么替换呢#xff1f;像这样#xff0c;类型依然是jsonb#xff0c;只不过嵌套一层#xff0c;JsonData#xff1a;链接如下
如何在pgAdmin中用替换的值更新jsonb列-CSDN博客
那么当jsonb嵌套jsonb应该怎么替换呢像这样类型依然是jsonb只不过嵌套一层JsonData{}这就不得不提一下这种数据结构是怎么来的。 首先构造一个正常的jsonb如下
--jsonb_build_object函数就能够帮助构造一个Json对象
SELECT jsonb_build_object(name, John, age, 30, gender, male); 展开来看下里面怎么存的 第二步骤我们嵌套一层Json
--此处将第一步骤构造的Json对象转化为text再被当作嵌套后的值
--jsonb_build_object(name, John, age, 30, gender, male)::text
SELECT jsonb_build_object(JsonData,jsonb_build_object(name, John, age, 30, gender, male)::text); 再展开看下效果可以看见第一步骤中的json已经变成text并且被加了转义符 \ 至此文章开头提到的嵌套Json我们就拿到了。
题外话那么再嵌套一层会怎样呢好的继续嵌套。
SELECT jsonb_build_object(JsonData,jsonb_build_object(JsonData,jsonb_build_object(name, John, age, 30, gender, male)::text)::text);
展开看效果又多加了一层转义符 知道了嵌套Json是怎么来的以后想写替换语句就容易了。
思路构造一个一样的Json结构直接set进去就好了。
--先查一下看效果是否更改url成功
select Id as id, jsonb_build_object(JsonData, jsonb_set((BuildInTemplate::jsonb - JsonData)::jsonb, {$template, url}, https://blog.csdn.net/CSDN_wcy?typeblog )::text) as data
from Test_Template
where IHLFlag2 and BuildInTemplate is not null
;begin;
update Test_Template
set BuildInTemplate jsonb_build_object(JsonData, jsonb_set((BuildInTemplate::jsonb - JsonData)::jsonb, {$template, url}, https://blog.csdn.net/CSDN_wcy?typeblog )::text)
where IHLFlag2 and BuildInTemplate is not null;-- commit;
rollback;
衍生的问题既然可已嵌套Json那么想不显示转义符的Json在pgAdmin中方便查阅又怎么做呢
思路我们知道嵌套相当于Jsonb被转成text存到value里那么我们就按text格式查出来再转回Jsonb。既存jsonb - text取text - jsonb。
-- -符号意思是按text取-符号意思是按jsonb取
select Id,(BuildInTemplate-JsonData)::jsonb as Data from public.Test_Template
看效果 参考链接
PostgreSQL 如何在PostgreSQL中解析JSON|极客笔记 (deepinout.com) 仅供学习参考如有侵权联系我删除