私のコードは:
SELECT column_name
FROM information.SCHEMA.columns
WHERE table_name = 'aean'
テーブルの列名を返しますaean
。
今、私は配列を宣言しました:
DECLARE colnames text[]
selectの出力をcolnames配列に格納するにはどうすればよいですか。
colnamesを初期化する必要はありますか?
私のコードは:
SELECT column_name
FROM information.SCHEMA.columns
WHERE table_name = 'aean'
テーブルの列名を返しますaean
。
今、私は配列を宣言しました:
DECLARE colnames text[]
selectの出力をcolnames配列に格納するにはどうすればよいですか。
colnamesを初期化する必要はありますか?
回答:
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'
);
DECLARE
、配列をmy_array INTEGER[];
(または関連するタイプが何であれ)として使用できます。のWHERE
ようなクエリの句で配列を使用することもできますWHERE values = ANY(my_array)
。ANY
それに等価機能ので、アレイ又はセットを受け取り、その配列/セットに存在するかチェックするIN ()
意味で、
array_agg(column_name, ',')