的hstore格式有没有更好的方式来获得一个表的行成hstore格式比上年轻松输出表行
SELECT hstore(ARRAY['col1','col2','col3'], ARRAY[col1::text, col2::text, col3::text]) FROM tbl;
它的工作原理,但我想必须有比一个更好的办法输入每列。 hstore需要记录类型的输入,但我无法弄清楚如何将单行生成查询提供给函数并让它快乐。 Postgres版本9.0.4。
的hstore格式有没有更好的方式来获得一个表的行成hstore格式比上年轻松输出表行
SELECT hstore(ARRAY['col1','col2','col3'], ARRAY[col1::text, col2::text, col3::text]) FROM tbl;
它的工作原理,但我想必须有比一个更好的办法输入每列。 hstore需要记录类型的输入,但我无法弄清楚如何将单行生成查询提供给函数并让它快乐。 Postgres版本9.0.4。
是 - 您可以使用hstore()
函数将行投射到hstore类型。
SELECT hstore(tbl.*) FROM tbl;
工作对我来说:
[email protected]=# 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
而不是*您必须参考表的别名:
SELECT hstore(tbl) FROM tbl;
与Asterisk其较长的少自显示语法:
SELECT hstore(tbl.*) FROM tbl;
啊!我不认为把表名放在那里。我刚刚尝试了SELECT hstore(*)FROM tbl。谢谢! – EvilAmarant7x 2012-01-10 21:53:30
由于某种原因,单独的'(*)'被解析的方式不同于'(foo。*)'。奇怪,但它是如何工作的。 – filiprem 2012-01-11 06:38:31