首页 > 解决方案 > PostgreSQL-如何选择jsonb列数组对象值

问题描述

我面临一个关于选择 jsonb 列值的问题。我想在当天等于星期一时显示签入和签出时间数据。我试着用

SELECT name, dayp -> 'days' ->> 'Monday'
FROM  attendanceprofile, 
      jsonb_array_elements(daysprofile) as dayp;

无法获得价值。

jsonb 列内的值为

[ {
        "days": {
            "Monday": {
                "checkin": "7:00",
                "checkout": "18:00"
            },
            "Tuesday": {
                "checkin": "5:00",
                "checkout": "16:00"
            }
        }
    } ]

标签: jsonpostgresql

解决方案


如果你总是有一个元素(或者你总是希望从第一个元素中得到这个),你可以使用“路径运算符”选择这些值#>>

SELECT name, 
       daysprofile #>> '{0,days,Monday,checkin}' as checkin,
       daysprofile #>> '{0,days,Monday,checkout}' as checkout
FROM  attendanceprofile 

推荐阅读