Конечно, вы можете написать функцию PL/pgSQL и запросить таблицу каталога pg_attribute
себя. Но это намного проще с одним из следующих:
JSON
Функция row_to_json()
обеспечивает функциональность, которая идет наполовину. Представлено в Postgres 9.2:
SELECT row_to_json(t, TRUE) FROM tbl t;
Вам вообще не нужно упоминать имена столбцов, функция извлекает их из типа таблицы.
->демонстрация SQLfiddle.
Но вам понадобится json_each_text()
< /strong> из 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.
магазин
Однако вы можете сделать то же самое с дополнительным модулем < сильный>хстор. Доступно начиная с 8.4. Установите его один раз с помощью:
CREATE EXTENSION hstore;
Подробности:
Пара "ключ-значение" в PostgreSQL
Запрос:
SELECT (each(hstore(t))).*
FROM tbl t
ORDER BY 1,2;
Вот и все.
Опять же, никакого SQLfiddle, так как туда нельзя установить дополнительные модули.
person
Erwin Brandstetter
schedule
24.09.2013