I’m trying to extract elements from a simple JSON array in a PostgreSQL table like:
x
id(int) vtags(jsonb)
-------- -----------------------
1 {"tags": ["a","b","c"]}
2 {"tags": ["x","y"]}
I would like to devise a SELECT
statement to produce an output like:
id tags
--- -----------------------
1 a
1 b
1 c
2 x
2 y
Advertisement
Answer
Use jsonb_array_elements()
to unnest the elements of the array:
select t.id,
jt.tag
from the_table t
cross join jsonb_array_elements_text(jt.vtags -> 'tags') as jt(tag)
order by t.id;