Tất nhiên, bạn có thể viết một hàm PL / pgSQL và truy vấn bảng danh mục pg_attribute
chính bạn. Nhưng nó dễ dàng hơn nhiều với một trong những cách sau:
JSON
Hàm row_to_json()
cung cấp chức năng đi được một nửa chặng đường. Được giới thiệu với Postgres 9.2 :
SELECT row_to_json(t, TRUE) FROM tbl t;
Bạn không cần phải đề cập đến tên cột, hàm lấy chúng từ loại bảng.
Nhưng bạn sẽ cần json_each_text()
từ Postgres 9.3 để đi hết chặng đường:
SELECT json_each_text(row_to_json(t)) FROM tbl t;
Để có thứ tự sắp xếp như bạn hiển thị:
SELECT (json_each_text(row_to_json(t))).*
FROM tbl t
ORDER BY 1, 2;
(Không rõ bạn muốn sắp xếp chính xác như thế nào.)
Chưa được kiểm tra. SQLfiddle chưa cung cấp Postgres 9.3.
hstore
Tuy nhiên, bạn có thể làm tương tự với mô-đun bổ sung hstore . Có sẵn kể từ 8.4 . Cài đặt nó một lần với:
CREATE EXTENSION hstore;
Chi tiết:
Cặp giá trị chính trong PostgreSQL
Truy vấn:
SELECT (each(hstore(t))).*
FROM tbl t
ORDER BY 1,2;
Đó là tất cả.
Một lần nữa, không có SQLfiddle, vì người ta không thể cài đặt các mô-đun bổ sung ở đó.