【问题标题】:Postgres query to return rows where json in the json column contains array elements more than onePostgres查询返回json列中json包含多个数组元素的行
【发布时间】:2017-10-11 19:23:45
【问题描述】:

我们使用的是 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 键中计算数组元素

大家可以推荐一下

【问题讨论】:

    标签: sql json database postgresql


    【解决方案1】:

    why not justjson_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
    

    【讨论】:

      猜你喜欢
      • 2018-07-23
      • 1970-01-01
      • 2018-05-28
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多