PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Изберете име на колона и стойност от таблицата

Разбира се, можете да напишете PL/pgSQL функция и да направите запитване до каталожната таблица pg_attribute себе си. Но е много по-лесно с едно от следните:

JSON

Функцията row_to_json() предоставя функционалност, която минава половината път. Въведено с Postgres 9.2 :

SELECT row_to_json(t, TRUE) FROM tbl t;

Изобщо не е нужно да споменавате имената на колоните, функцията ги извлича от типа таблица.

->Демо на SQLfiddle.

Но ще ви трябва json_each_text() от Postgres 9.3 за да стигнете докрай:

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

За да получите ред на сортиране, както показвате:

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

(Не е ясно как точно искате да сортирате.)
Нетествано. SQLfiddle все още не предоставя Postgres 9.3.

hstore

Можете обаче да направите същото с допълнителен модул hstore . Предлага се от 8.4 . Инсталирайте го веднъж с:

CREATE EXTENSION hstore;

Подробности:
Двойка ключ стойност в PostgreSQL

Заявка:

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

Това е всичко.
Отново няма SQLfiddle, тъй като там не могат да се инсталират допълнителни модули.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете най-често срещаната стойност за всяка стойност на друга колона в SQL

  2. COPY с динамично име на файл

  3. Postgresql пълнотекстово търсене на подобни думи

  4. Обхватът на Rails е създаден в рамките на месец

  5. Как да видите основния курсор на активната заявка