gpt4 book ai didi

sql - 在 Postgres 中将 VARIADIC 参数传递给 IN

转载 作者:行者123 更新时间:2023-11-29 12:53:45 33 4
gpt4 key购买 nike

我正在尝试构建一个 Postgres 函数,该函数将表名作为可变参数并输出查询,该查询从 information_schema 返回选择字符串,例如

SELECT *
FROM table1
UNION
SELECT *
FROM table2

到目前为止,我做了以下事情:

CREATE OR REPLACE FUNCTION query_tables(VARIADIC list text[])
RETURNS text
AS $$
DECLARE
qry TEXT;
BEGIN
SELECT string_agg(
format('SELECT *
FROM %1$I', table_name),
' UNION ')
INTO qry
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name IN (list);

return qry;
END;
$$

所以可以这样调用 SELECT * FROM query_tables('table1','table2');

但是,我被困在 IN (list) 中,无法在 IN() 中传递可变参数。

这可能吗?

最佳答案

要使用数组,请更改

table_name IN (list)table_name = ANY (list)

https://www.postgresql.org/docs/current/static/functions-comparisons.html

expression operator ANY (array expression)

还有:https://stackoverflow.com/a/31192557/5315974

关于sql - 在 Postgres 中将 VARIADIC 参数传递给 IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48209168/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com