首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL -查询JSON并替换JSON值

PostgreSQL -查询JSON并替换JSON值
EN

Stack Overflow用户
提问于 2019-11-07 15:35:30
回答 1查看 3.1K关注 0票数 0

在Postgres中,其中一个列的JSON数据发布在下面。

当我对该列进行'Select‘查询时,我希望将’lib-5dc422e9f21531f9dbc16fd0‘和’lib-5dc422e9153f2153f9dbc16fd0‘的JSON值替换为lib-One和lib-6等。

我对postgres很陌生,已经想了一段时间了。

基本上将任何lib-*-[0-9]值替换为lib-*-

代码语言:javascript
复制
{
   "data":{
      "Library":{
         "Checkout":{
            "invoiceId":"12dfdf454546",
            "checkoutDetail":{
               "invoiceTransactionId":"5ab422e9f21531f9dbc16fd6",
               "invoicePaymentDetail":{
                  "objectId":"lib-One-5dc422e9f21531f9dbc16fd0",
                  "checkoutPeriods":[
                     {
                        "startDate":"2017-04-14T19:00:00.000",
                        "endDate":"2017-05-19T19:00:00.000"
                     }
                  ],
                  "invoice":{
                     "objectId":"lib-Six-5dc422e9f21531f9dbc16fd0",
                     "checkObject":true
                  }
               }
            }
         }
      }
   }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-07 15:56:28

demo:db<>fiddle

我会用字符串上的RegEx函数来解决这个问题:

代码语言:javascript
复制
SELECT
      regexp_replace('<your data>'::text, '"(lib-.*?-)(.*?)"', '"\1"', 'g')::json as a

  1. 将JSON对象转换为string
  2. ,替换相关部分:可以用第二个参数找到这些部件,该参数每个匹配提供两个组。替换字符串只是第一个。
  3. 将结果重铸回JSON
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58752111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档