首页 > 解决方案 > Postgres IN 运算符引发错误:array_variable 处或附近的语法错误

问题描述

我正在制作function,我的功能之一是使用 SQLIN运算符。基本上我想要这样的查询

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

标签: sqlpostgresqlplpgsql

解决方案


为此,您需要使用运算符 ANY。IN 适用于列表,ANY 适用于数组 select name from table where name = ANY(places)


推荐阅读