Skip to content
Advertisement

How to extract values from array json column into multiple rows in Postgresql?

How can I extract values from the json arrays in ranges column as multiple rows Postgresq?

CREATE TABLE test_table (
  id INTEGER, 
  ranges jsonb
);

INSERT INTO test_table(id, ranges) VALUES
(1,'[{"End": 100, "Start": 1}, {"End": 1000, "Start": 101}]'),
(2,'[{"End": 2000, "Start": 1001}, {"End": 2002, "Start": 2001}]')
;

Expected result:

Start End
1 100
101 1000
1001 2000
2001 2002

Advertisement

Answer

You can use jsonb_to_recordset function for this :

SELECT ranges."Start",
       ranges."End"
FROM   test_table,
       jsonb_to_recordset(test_table.ranges) AS ranges("End" int, "Start" int)

http://www.sqlfiddle.com/#!17/22d62/10

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement