假设 json 对象是 > { "foo": "bar"} 在 stringyfing 之后我得到了 > "{\"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;
关于sql - 将字符串化的 json 对象转换为 jsonb 对象的 Postgres 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48301317/