mit*_*esh 60 sql arrays postgresql plpgsql
我的代码是:
SELECT column_name
FROM information.SCHEMA.columns
WHERE table_name = 'aean'
Run Code Online (Sandbox Code Playgroud)
它返回表的列名aean
.
现在我宣布了一个数组:
DECLARE colnames text[]
Run Code Online (Sandbox Code Playgroud)
如何在列号数组中存储select的输出.
是否需要初始化colnames?
Den*_*rdy 113
有两种方法.一个是聚合:
SELECT array_agg(column_name::TEXT)
FROM information.schema.columns
WHERE table_name = 'aean'
Run Code Online (Sandbox Code Playgroud)
另一种是使用数组构造函数:
SELECT ARRAY(
SELECT column_name
FROM information.schema.columns
WHERE table_name = 'aean')
Run Code Online (Sandbox Code Playgroud)
我假设这是用于plpgsql.在这种情况下,您可以像这样分配:
colnames := ARRAY(
SELECT column_name
FROM information.schema.columns
WHERE table_name='aean'
);
Run Code Online (Sandbox Code Playgroud)
常规的:
SELECT post_id FROM posts WHERE(poster_name='John');
output: [
{'post_id': 1},
{'post_id': 2},
{'post_id': 3},
]
Run Code Online (Sandbox Code Playgroud)
使用ARRAY_AGG
:
SELECT ARRAY_AGG(post_id) FROM posts WHERE(poster_name='John');
output: [
{[1, 2, 3]}
]
Run Code Online (Sandbox Code Playgroud)
我有完全一样的问题。Denis给出的解决方案的又一可行的修改(必须指定类型):
SELECT ARRAY(
SELECT column_name::text
FROM information_schema.columns
WHERE table_name='aean'
)
Run Code Online (Sandbox Code Playgroud)