PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Sélectionnez le nom et la valeur de la colonne dans le tableau

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.

->Démo SQLfiddle.

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.