PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Seleziona il nome e il valore della colonna dalla tabella

Naturalmente, potresti scrivere una funzione PL/pgSQL e interrogare la tabella del catalogo pg_attribute te stesso. Ma è molto più semplice con uno dei seguenti:

JSON

La funzione row_to_json() fornisce funzionalità che vanno a metà strada. Introdotto con Postgres 9.2 :

SELECT row_to_json(t, TRUE) FROM tbl t;

Non devi menzionare affatto i nomi delle colonne, la funzione li deriva dal tipo di tabella.

->Demo SQLfiddle.

Ma avrai bisogno di json_each_text() da Postgres 9.3 per andare fino in fondo:

SELECT json_each_text(row_to_json(t)) FROM tbl t;

Per ottenere un ordinamento come quello visualizzato:

SELECT (json_each_text(row_to_json(t))).*
FROM   tbl t
ORDER  BY 1, 2;

(Non è chiaro come vuoi ordinare esattamente.)
Non testato. SQLfiddle non fornisce ancora Postgres 9.3.

hstore

Tuttavia, puoi fare lo stesso con il modulo aggiuntivo hstore . Disponibile da 8.4 . Installalo una volta con:

CREATE EXTENSION hstore;

Dettagli:
Coppia valore chiave in PostgreSQL

Domanda:

SELECT (each(hstore(t))).*
FROM   tbl t
ORDER  BY 1,2;

Questo è tutto.
Di nuovo, niente SQLfiddle, dal momento che non è possibile installare moduli aggiuntivi lì.