附加内容中的示例数据看起来像{“param1”:10,“param2”:15}
我想仅使用SQL语句修改JSON.我想做这样的事情:
如果额外的param2超过12,则通过向其值添加10来更新extras字段的param1.
我该如何编写这样的SQL语句?我知道我可以很容易地在应用程序层中执行此 *** 作,但我想在sql层本身中执行此 *** 作,因为我可能会处理的行数会很大而且我不想在db-application中浪费时间 – db往返
解决方法 Jsonb类型用于存储整个文档.如果更改文档的任何部分,则需要为列指定新值.因为Postgres将旧版本保留了一段时间,这是一项昂贵的 *** 作.考虑到这一点,这是一个如何不更新Jsonb列的示例:
create table t1 (doc Jsonb);insert into t1 values ('{"param1": 10,"param2": 15}'),('{"param1": 10,"param2": 5}');update t1set doc = ('{"param1": ' || ((doc->'param1')::text::int + 10)::text || ',"param2": ' || (doc->'param2')::text || '}')::Jsonbwhere (doc->'param2')::text::int > 12;select * from t1;
这打印:
doc------------------------------ {"param1": 10,"param2": 5} {"param1": 20,"param2": 15}(2 rows)总结
以上是内存溢出为你收集整理的如何在PostgreSQL中更新jsonb列的字段?全部内容,希望文章能够帮你解决如何在PostgreSQL中更新jsonb列的字段?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)