Bạn có thể sử dụng json_array_elements
hàm tạo SETOF json
từ một mảng:
SELECT name, json_array_elements(data) AS author
FROM publisher
Có điều đó, bạn có thể sử dụng nó như một truy vấn con, vì vậy bạn có thể lọc những gì bạn muốn, ví dụ:
SELECT DISTINCT author->>'author'
FROM (
SELECT name, json_array_elements(data) AS author
FROM publisher
) t
WHERE t.author->>'type' = 'Novel';
Chỉ cần lưu ý rằng nếu bạn có nhiều hàng trong bảng này, hiệu suất của các truy vấn như vậy (ít nhất là đối với phiên bản hiện tại, 9.3) sẽ thực sự tồi tệ. Tôi khuyên bạn nên chuẩn hóa dữ liệu thành các bảng.