我在制造 function
我的一个特点是使用sql IN
接线员。基本上我想这样问
select name
from atlas_ins_th_travel_place pp
where pp.name IN ('Guyana', 'Mexico');
然后我做 function
并接受 varchar[]
作为这样的输入
CREATE OR REPLACE FUNCTION test_place(
places VARCHAR[]
) RETURNS SETOF test_place_view AS
$$
DECLARE
dummy ALIAS FOR $1;
BEGIN
-- FOR i IN 1 .. array_upper(places, 1)
-- LOOP
-- RAISE NOTICE '%', places[i]; -- single quotes!
-- array_append(dummy, places[i])
-- END LOOP;
RETURN QUERY
select name
from atlas_ins_th_travel_place
where name in places;
END;
$$ LANGUAGE plpgsql STABLE;
不幸的是,它引发了关于 operator
. 我试过制作新的数组并使用它。但这没有帮助
问题:
如何使用 IN
操作员 array
?
2条答案
按热度按时间hgc7kmma1#
你需要使用任何运算符。在使用列表时,任何数组都适用
select name from table where name = ANY(places)
mfuanj7w2#
操作员
IN
仅支持列表。它不支持在数组中搜索。你应该使用运算符= ANY()
.或者你可以用一个函数
array_position
(但不使用统计数据):如果数组很小(<100),那么使用什么并不太重要。对于较大的数组,最好使用运算符。但这取决于上下文。