gpt4 book ai didi

postgresql - 在 postgresql 中使用 View 时可以传递参数吗?

转载 作者:行者123 更新时间:2023-11-29 14:35:55 25 4
gpt4 key购买 nike

例如,我想为特定搜索创建一个 View ,

create view search_in_structure as
select a,b,c,d,e
from
t1 natural inner join t2 natural inner join t3 ...
where
a ilike '%search_string%'
or b ilike '%search_string%'
or c ilike '%search_string%'
or f ilike '%search_string%';

这没有意义,因为我无法修改 search_string。有没有一种机制可以为 search_string 提供一个值,这样它就会执行经过适当修改的 View 语句,比如:

select a,b from search_in_structure where search_string='postgresql 4ever';

如果不可能,您会推荐我使用什么解决方案并获得相同的结果?我能想到的唯一解决方案是创建一个函数(例如,search_in_structure (IN search text, OUT a text, OUT b text ...) returns record)并调用它:

select a,b from (select search_in_structure('postgresql 4ever'));

但由于我还是一个postgresql菜鸟,所以我希望得到专家的建议。

最佳答案

函数是要走的路:

create function search_in_structure(p_search_value text)
returns table (a text, b text, c text, d text)
as
$$
select a,b,c,d,e
from t1
natural join t2
natural join t3 ...
where
a ilike '%'||p_search_value||'%'
or b ilike '%'||p_search_value||'%'
or c ilike '%'||p_search_value||'%'
or f ilike '%'||p_search_value||'%'
$$
language sql;

然后你可以这样做:

select *
from search_in_structure('foobar');

关于postgresql - 在 postgresql 中使用 View 时可以传递参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44747529/

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