Разбира се, можете да напишете PL/pgSQL функция и да направите запитване до каталожната таблица pg_attribute
себе си. Но е много по-лесно с едно от следните:
JSON
Функцията row_to_json()
предоставя функционалност, която минава половината път. Въведено с Postgres 9.2 :
SELECT row_to_json(t, TRUE) FROM tbl t;
Изобщо не е нужно да споменавате имената на колоните, функцията ги извлича от типа таблица.
Но ще ви трябва 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, тъй като там не могат да се инсталират допълнителни модули.