2017-10-11 51 views
0

我們正在使用的Postgres數據庫中,我們已經一個表中包含類型JSON的列,格式如下圖所示Postgres的查詢返回行,其中JSON的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鍵內的數組元素

可以在任何請建議

回答

0

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