gpt4 book ai didi

postgresql - 我可以从 Postgres 函数返回一个字符串列表吗?

转载 作者:行者123 更新时间:2023-11-29 12:10:39 24 4
gpt4 key购买 nike

我在 Postgres 中有一个物化 View ,例如

CREATE MATERIALIZED VIEW my_view AS SELECT * FROM my_table WHERE my_column NOT IN ('a', 'b', 'c');

但是 ('a', 'b', 'c') 是我业务逻辑的一部分,我希望能够将它变成 ('a', ' b', 'c', 'd')('a') 而不必删除 my_view 并重新创建它,因为它有一堆依赖的观点。所以我想将 my_view 的定义替换为类似

的内容
CREATE MATERIALIZED VIEW my_view AS SELECT * FROM my_table WHERE my_column NOT IN my_unwanted_list();

然后 my_unwanted_list 将只返回一个常量,我可以通过更新 my_unwanted_list 的定义将其设置为我想要的任何值。然后我可以通过更新 my_unwanted_list 和刷新 my_view 添加不需要的值。

但是我在为 my_unwanted_list 获取正确的语法时遇到了一些麻烦。我如何编写一个 PostgreSql 函数来返回我可以在 IN 过滤器中使用的内容?

最佳答案

您可以将值放在 array 中,并使用 ANY() / ALL() 与其元素进行比较构造:

CREATE FUNCTION my_unwanted_list() RETURNS TEXT[] AS $$
SELECT ARRAY['a', 'b', 'c']
$$ LANGUAGE sql IMMUTABLE;

CREATE MATERIALIZED VIEW my_view AS
SELECT * FROM my_table
WHERE my_column <> ALL(my_unwanted_list());

关于postgresql - 我可以从 Postgres 函数返回一个字符串列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37403068/

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