PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wybierz nazwę kolumny i wartość z tabeli

Oczywiście możesz napisać funkcję PL/pgSQL i wysłać zapytanie do tabeli katalogu pg_attribute się. Ale jest to o wiele łatwiejsze dzięki jednej z następujących opcji:

JSON

Funkcja row_to_json() zapewnia funkcjonalność, która idzie w połowie. Wprowadzony z Postgresem 9.2 :

SELECT row_to_json(t, TRUE) FROM tbl t;

Nie musisz w ogóle wymieniać nazw kolumn, funkcja wywodzi je z typu tabeli.

->Demo SQLfiddle.

Ale będziesz potrzebować json_each_text() z Postgresa 9.3 przejść całą drogę:

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

Aby uzyskać porządek sortowania taki, jak wyświetlasz:

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

(Nie jest jasne, jak dokładnie chcesz sortować.)
Nieprzetestowane. SQLfiddle nie zapewnia jeszcze Postgres 9.3.

sklep

Możesz jednak zrobić to samo z dodatkowym modułem sklep . Dostępne od 8.4 . Zainstaluj go raz za pomocą:

CREATE EXTENSION hstore;

Szczegóły:
Para klucz-wartość w PostgreSQL

Zapytanie:

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

To wszystko.
Ponownie nie ma SQLfiddle, ponieważ nie można tam zainstalować dodatkowych modułów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego PostgreSQL traktuje moje zapytanie inaczej w funkcji?

  2. Postgres SQL SELECT i UPDATE zachowują się inaczej

  3. Osiąganie wysokowydajnych transakcji podczas rozszerzania PostgreSQL o funkcje C

  4. Importuj dane z Excela do PostgreSQL

  5. Prawidłowy sposób korzystania z kopii Postgres jdbc