Selvfølgelig kan du skrive en PL/pgSQL-funktion og forespørge i katalogtabellen pg_attribute
dig selv. Men det er så meget nemmere med en af følgende:
JSON
Funktionen row_to_json()
giver funktionalitet, der går halvvejs. Introduceret med Postgres 9.2 :
SELECT row_to_json(t, TRUE) FROM tbl t;
Du behøver slet ikke at nævne kolonnenavnene, funktionen udleder dem fra tabeltypen.
Men du skal bruge json_each_text()
fra Postgres 9.3 at gå hele vejen:
SELECT json_each_text(row_to_json(t)) FROM tbl t;
Sådan får du en sorteringsrækkefølge, som du viser:
SELECT (json_each_text(row_to_json(t))).*
FROM tbl t
ORDER BY 1, 2;
(Det er uklart, hvordan du vil sortere præcist.)
Utestet. SQLfiddle leverer ikke Postgres 9.3 endnu.
hstore
Du kan dog gøre det samme med ekstra modul hstore . Tilgængelig siden 8.4 . Installer det én gang med:
CREATE EXTENSION hstore;
Detaljer:
Nøgleværdipar i PostgreSQL
Forespørgsel:
SELECT (each(hstore(t))).*
FROM tbl t
ORDER BY 1,2;
Det er alt.
Igen, ingen SQLfiddle, da man ikke kan installere yderligere moduler der.