簡體   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