Bien sûr, vous pouvez écrire une fonction PL/pgSQL et interroger la table du catalogue pg_attribute
toi-même. Mais c'est tellement plus facile avec l'un des éléments suivants :
JSON
La fonction row_to_json()
fournit des fonctionnalités qui font la moitié du chemin. Introduit avec Postgres 9.2 :
SELECT row_to_json(t, TRUE) FROM tbl t;
Vous n'avez pas du tout besoin de mentionner les noms de colonne, la fonction les dérive du type de table.
Mais vous aurez besoin de json_each_text()
depuis Postgres 9.3 aller jusqu'au bout :
SELECT json_each_text(row_to_json(t)) FROM tbl t;
Pour obtenir un ordre de tri comme celui que vous affichez :
SELECT (json_each_text(row_to_json(t))).*
FROM tbl t
ORDER BY 1, 2;
(Vous ne savez pas exactement comment vous voulez trier.)
Non testé. SQLfiddle ne fournit pas encore Postgres 9.3.
hstore
Cependant, vous pouvez faire la même chose avec le module supplémentaire hstore . Disponible depuis 8.4 . Installez-le une fois avec :
CREATE EXTENSION hstore;
Détails :
Paire clé-valeur dans PostgreSQL
Requête :
SELECT (each(hstore(t))).*
FROM tbl t
ORDER BY 1,2;
C'est tout.
Encore une fois, pas de SQLfiddle, puisqu'on ne peut pas y installer de modules supplémentaires.