假设json对象是>{“foo”:“bar”}
串完线后,我得到了>“{”“foo\”:“bar\”}
如何使用UPDATE sql查询返回原始json对象?
sql - Postgres查询将字符串化的json对象转换为jsonb对象-LMLPHP
我知道这是一个糟糕的数据库体系结构,它是由我之前的另一个工程师设计的,这就是为什么我希望返回原始的json数据,然后将列更改为jsonb
更新:
请注意,我正在寻找一个只使用sql查询而不使用javascript等编程语言的答案。。等

最佳答案

我可以通过做一些regexp替换来解决这个问题。您可能不需要where子句,但在我的例子中,我有一个bug开始对JSONB列进行字符串化,因此只有部分数据需要应用此更改。

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

10-06 05:27
查看更多