Postgres查询返回json列中的json包含多个数组元素的行

时间:2017-10-11 11:20:28

标签: sql json database postgresql

我们正在使用Postgres DB,因为我们有一个表包含JSON类型的列,格式如下所示

{
  "name" : "XXX",
  "id"  : "123",
  "course" :[
     {
       "name" : "java",
       "tutor":"YYYY"
     },
     {
       "name" : "python",
       "tutor":"ZZZZ"
     }

   ]  

}


{
  "name" : "XXX",
  "id"  : "123",
  "course" :[
     {
       "name" : "java",
       "tutor":"YYYY"
     },
     {
       "name" : "python",
       "tutor":"ZZZZ"
     }

   ]  

}

就像这样,例如我们有两行,而在json列中,我们每个都有上面的

我想要Postgre查询,它将检查课程数组中的元素数量,如果它不止一个,那么只返回该行

我没有得到如何计算json键内的数组元素

可以任何建议

1 个答案:

答案 0 :(得分:0)

why not just json_array_length?...例如:

f=# with c(j) as (values('{
  "name" : "XXX",
  "id"  : "123",
  "course" :[
     {
       "name" : "java",
       "tutor":"YYYY"
     },
     {
       "name" : "python",
       "tutor":"ZZZZ"
     }

   ]

}'::json))
select json_array_length(j->'course') from c;
 json_array_length
-------------------
                 2
(1 row)

如此喜欢

select * from table_name where json_array_length(j->'course') > 1