假设json对象是>{“foo”:“bar”}
串完线后,我得到了>“{”“foo\”:“bar\”}
如何使用UPDATE sql查询返回原始json对象?
我知道这是一个糟糕的数据库体系结构,它是由我之前的另一个工程师设计的,这就是为什么我希望返回原始的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;