Легко вывести формат hstore строки таблицы - PullRequest
6 голосов
/ 11 января 2012

Есть ли лучший способ перевести строку таблицы в формат hstore, чем идти

SELECT hstore(ARRAY['col1','col2','col3'], ARRAY[col1::text, col2::text, col3::text]) FROM tbl;

Это работает, но я думаю, что должен быть лучший способ, чем печатать каждый столбец. hstore принимает тип записи для ввода, но я не мог понять, как передать однострочный запрос в функцию и сделать его счастливым Postgres версия 9.0.4.

Ответы [ 2 ]

10 голосов
/ 11 января 2012

Да - вы можете привести строку к типу hstore с помощью функции hstore().

SELECT hstore(tbl.*) FROM tbl;

У меня работает:

filip@filip=# select hstore(foo.*) from foo;
         hstore
------------------------
 "bar"=>"1", "baz"=>"2"
(1 row)

См. http://www.postgresql.org/docs/9.0/static/hstore.html#HSTORE-FUNC-TABLE

0 голосов
/ 09 июля 2017

Вместо * вы должны ссылаться на псевдоним таблицы:

SELECT hstore(tbl) FROM tbl;

Звездочка имеет более длинный и менее понятный синтаксис:

SELECT hstore(tbl.*) FROM tbl;
...