postgresql 如何在postgres中查询JSON列

xzlaal3s  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(2)|浏览(149)

我的表名是participant_preference,列名是'value',JSON在列中,如下所示,

{
  "DiaryUsers": [
    {
      "UserId": "HUGWFJJ6",
      "IsDiaryVisible": false,
      "ParticipantName": "Dr. Mckenzie, Alistair G [SP000024]",
      "Status": "A"
    },
    {
      "UserId": "HUV65PV1",
      "IsDiaryVisible": true,
      "ParticipantName": "Dr. Mckenzie, Alistair G [SP000024]",
      "Status": "A"
    }
  ]
}

字符串
我需要帮助查询特定的ID,即UserId=HUV65PV1,并期望从SQL查询只有这个用户的数据UserId。
我的数据库是PostgreSQL。
请让我知道如果我错过了任何细节。

33qvvth1

33qvvth11#

CROSS JOIN中使用jsonb_array_elements来访问数组元素,例如:

SELECT e.* FROM t
CROSS JOIN LATERAL jsonb_array_elements(col->'DiaryUsers') e
WHERE e->>'UserId' = 'HUV65PV1';

字符串
演示:db<>fiddle

dba5bblo

dba5bblo2#

以下是使用jsonb_path_query_array的方法:

select jsonb_path_query_array(col->'DiaryUsers', '$[*] ? (@.UserId == "HUGWFJJ6")') as user
from participant_preference 
where col->'DiaryUsers' @> '[{"UserId":"HUGWFJJ6"}]';

字符串
Demo here

相关问题