PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Selecione o nome e o valor da coluna da tabela


Claro, você pode escrever uma função PL/pgSQL e consultar a tabela de catálogo pg_attribute você mesma. Mas é muito mais fácil com um dos seguintes:

JSON


A função row_to_json() fornece funcionalidade que vai até a metade do caminho. Introduzido com o Postgres 9.2 :
SELECT row_to_json(t, TRUE) FROM tbl t;

Você não precisa mencionar os nomes das colunas, a função os deriva do tipo de tabela.

->Demonstração do SQLfiddle.

Mas você precisará de json_each_text() do Postgres 9.3 para percorrer todo o caminho:
SELECT json_each_text(row_to_json(t)) FROM tbl t;

Para obter uma ordem de classificação como você exibe:
SELECT (json_each_text(row_to_json(t))).*
FROM   tbl t
ORDER  BY 1, 2;

(Não está claro como você deseja classificar exatamente.)
Não testado. O SQLfiddle ainda não fornece o Postgres 9.3.

hstore


No entanto, você pode fazer o mesmo com o módulo adicional hstore . Disponível desde 8.4 . Instale-o uma vez com:
CREATE EXTENSION hstore;

Detalhes:
Par de valores-chave no PostgreSQL

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

Isso é tudo.
Novamente, sem SQLfiddle, já que não é possível instalar módulos adicionais lá.