我试图创建一个小函数来返回数组中的所有客户端,但我一直遇到错误。
DO $$
DECLARE
c_ids INTEGER[] := array[12879,16759];
BEGIN
SELECT *
FROM client
WHERE id IN (c_ids);
END $$;
做这样的事情的正确方法是什么?我需要将c_ids作为变量,因为我将在查询的许多地方使用它(示例直接查询不是结束查询)。
答案 0 :(得分:3)
IN
运算符使用=
运算符比较值。如果要检查数组中的值,则需要使用ANY
:
DO $$
DECLARE
c_ids INTEGER[] := array[12879,16759];
BEGIN
SELECT *
FROM client
WHERE id = ANY (c_ids);
END $$;