繁体   English   中英

Postgres查询将字符串化的json对象转换为jsonb对象

[英]Postgres query to convert stringifyed json object to jsonb object

假设在stringyfing之后json对象是> {“ foo”:“ bar”}我得到了>“ {\\” foo \\“:\\” bar \\“}”

如何使用UPDATE sql查询取回原始json对象?

在此处输入图片说明

我意识到这是一个不好的数据库体系结构,它是由我之前的另一位工程师设计的,这就是为什么我想找回原始的json数据,然后将该列更改为jsonb的原因

更新:请注意,我正在寻找一个答案,仅使用sql查询,而不涉及像javascript这样的编程语言。

通过执行一些正则表达式替换,我能够解决同一问题。 您可能不需要where子句,但就我而言,我有一个错误开始对JSONB列进行字符串化,因此仅部分数据需要应用此更改。

update your_table 
    set text = 
        jsonb(regexp_replace(regexp_replace(regexp_replace(text::text, '"$', ''),  '^"+', ''), '\\"', '"', 'g')) 
    where text->>'foo' is null;

你可以做to_json('{ \\"foo\\": \\"bar\\" }'::text)

所以就像

update yourtable set yourjsoncolumn = to_json(yourjsoncolum::text)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM