web-dev-qa-db-ja.com

選択クエリの出力をpostgresの1つの配列に保存する

私のコードは:

SELECT column_name
FROM information.SCHEMA.columns
WHERE table_name = 'aean'

テーブルaeanの列名を返します。
配列を宣言しました:

DECLARE colnames text[]

Selectの出力をcolnames配列に格納するにはどうすればよいですか。
colnameを初期化する必要はありますか?

56
mitesh

2つの方法があります。 1つは集約することです。

SELECT array_agg(column_name::TEXT)
FROM information.schema.columns
WHERE table_name = 'aean'

もう1つは、配列コンストラクターを使用することです。

SELECT ARRAY(
SELECT column_name 
FROM information.schema.columns 
WHERE table_name = 'aean')

これはplpgsql用だと思います。その場合、次のように割り当てることができます。

colnames := ARRAY(
SELECT column_name
FROM information.schema.columns
WHERE table_name='aean'
);
107

私はまったく同じ問題を抱えていました。 Denisによって与えられたソリューションのもう1つの実用的な修正(タイプを指定する必要があります):

SELECT ARRAY(
SELECT column_name::text
FROM information_schema.columns
WHERE table_name='aean'
)
4
ptski