Tentu saja, Anda dapat menulis fungsi PL/pgSQL dan menanyakan tabel katalog pg_attribute
dirimu sendiri. Tapi itu jauh lebih mudah dengan salah satu dari berikut ini:
JSON
Fungsi row_to_json()
menyediakan fungsionalitas yang berjalan setengah jalan. Diperkenalkan dengan Postgres 9.2 :
SELECT row_to_json(t, TRUE) FROM tbl t;
Anda tidak perlu menyebutkan nama kolom sama sekali, fungsi mengambilnya dari tipe tabel.
Tetapi Anda memerlukan json_each_text()
dari Postgres 9.3 untuk pergi jauh-jauh:
SELECT json_each_text(row_to_json(t)) FROM tbl t;
Untuk mendapatkan pengurutan seperti yang Anda tampilkan:
SELECT (json_each_text(row_to_json(t))).*
FROM tbl t
ORDER BY 1, 2;
(Tidak jelas bagaimana Anda ingin mengurutkan dengan tepat.)
Belum diuji. SQLfiddle belum menyediakan Postgres 9.3.
hstore
Namun, Anda dapat melakukan hal yang sama dengan modul tambahan hstore . Tersedia sejak 8.4 . Instal sekali dengan:
CREATE EXTENSION hstore;
Detail:
Pasangan nilai kunci di PostgreSQL
Pertanyaan:
SELECT (each(hstore(t))).*
FROM tbl t
ORDER BY 1,2;
Itu saja.
Sekali lagi, tidak ada SQLfiddle, karena seseorang tidak dapat menginstal modul tambahan di sana.