一枚码农404 2023-05-07 15:47 采纳率: 25%
浏览 24
已结题

在postgresql数据库中,查询的时候,对于一个json字段,怎样删除该json字段中的第二级的一个key呢

在postgresql数据库中,有如下的json类型的数据,查询的时候怎样删除掉score呢?

数据库中该json字段的存储内容
{
"201010023": {"name": "a", "score": 3.2}, 
"201010024": {"name": "b", "score": 2.2}, 
"201010025": {"name": "c", "score": 7.2},
 "201010026": {"name": "d", "score": 3.1}, 
"201010027": {"name": "e", "score": 9.2}, 
"201010028": {"name": "f", "score": 7.2}
}
需要的查询结果
{
"201010023": {"name": "a"}, 
"201010024": {"name": "b", 
"201010025": {"name": "c"},
 "201010026": {"name": "d"}, 
"201010027": {"name": "e"}, 
"201010028": {"name": "f"}
}

数据库中的数据

img

试过用 #-来删除,不过只能一个一个删,不能整个删除

img

看有没有更好的办法实现这个效果

  • 写回答

3条回答 默认 最新

  • 一枚码农404 2023-05-07 18:46
    关注

    直接用正则可以实现效果:

    select 
        id, 
        regexp_replace(json_content::text, '"[\s]*score"\:[\s]*[0-9]*\.[0-9]*,[\s]*', '', 'ig')::json 
    from test_json;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月15日
  • 已采纳回答 5月7日
  • 创建了问题 5月7日