Natürlich könnten Sie eine PL/pgSQL-Funktion schreiben und die Katalogtabelle abfragen pg_attribute
dich selbst. Aber es ist so viel einfacher mit einem der folgenden:
JSON
Die Funktion row_to_json()
bietet Funktionalität, die den halben Weg geht. Eingeführt mit Postgres 9.2 :
SELECT row_to_json(t, TRUE) FROM tbl t;
Sie müssen die Spaltennamen überhaupt nicht angeben, die Funktion leitet sie vom Tabellentyp ab.
Sie benötigen jedoch json_each_text()
von Postgres 9.3 den ganzen Weg gehen:
SELECT json_each_text(row_to_json(t)) FROM tbl t;
So erhalten Sie eine Sortierreihenfolge wie Sie anzeigen:
SELECT (json_each_text(row_to_json(t))).*
FROM tbl t
ORDER BY 1, 2;
(Es ist unklar, wie Sie genau sortieren möchten.)
Ungetestet. SQLfiddle stellt Postgres 9.3 noch nicht bereit.
hstore
Sie können jedoch dasselbe mit dem Zusatzmodul tun hstore . Verfügbar seit 8.4 . Einmal installieren mit:
CREATE EXTENSION hstore;
Details:
Schlüssel-Wert-Paar in PostgreSQL
Abfrage:
SELECT (each(hstore(t))).*
FROM tbl t
ORDER BY 1,2;
Das war's.
Nochmal kein SQLfiddle, da man dort keine zusätzlichen Module installieren kann.