テーブルの行をhstore形式にするよりも良い方法はありますか
SELECT hstore(ARRAY['col1','col2','col3'], ARRAY[col1::text, col2::text, col3::text]) FROM tbl;
それは機能しますが、各列を入力するよりも良い方法が必要だと思います。hstoreは入力用にレコード型を取りますが、単一行を生成するクエリを関数にフィードして満足させる方法がわかりませんでした。Postgresバージョン9.0.4。
テーブルの行を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;
私のために働く:
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を参照してください。