sql >> Databáze >  >> RDS >> PostgreSQL

Vyberte název a hodnotu sloupce z tabulky

Samozřejmě můžete napsat funkci PL/pgSQL a dotazovat se na tabulku katalogu pg_attribute vy sám. Ale je to mnohem jednodušší s jedním z následujících:

JSON

Funkce row_to_json() poskytuje funkce, které jsou poloviční. Představeno s Postgres 9.2 :

SELECT row_to_json(t, TRUE) FROM tbl t;

Názvy sloupců nemusíte uvádět vůbec, funkce je odvodí z typu tabulky.

->Ukázka SQLfiddle.

Ale budete potřebovat json_each_text() od Postgres 9.3 jít celou cestu:

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

Chcete-li získat pořadí řazení, jaké zobrazujete:

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

(Není jasné, jak přesně chcete třídit.)
Netestováno. SQLfiddle zatím neposkytuje Postgres 9.3.

hstore

Totéž však můžete udělat s přídavným modulem hstore . Dostupné od 8.4 . Nainstalujte jej jednou pomocí:

CREATE EXTENSION hstore;

Podrobnosti:
Pár klíč – hodnota v PostgreSQL

Dotaz:

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

To je vše.
Opět žádné SQLfiddle, protože tam nelze instalovat další moduly.



  1. Uložená procedura MySQL vs. složitý dotaz

  2. LOAD DATA není povoleno v uložených procedurách

  3. 6 zábavných faktů o společnosti Microsoft, které pravděpodobně neznáte!

  4. Jak vrátit více řádků z uložené procedury? (Oracle PL/SQL)