我正在尝试实现基于输入数组选择数据的行为,或获取所有数据(如果array为null或为空)。
SELECT * FROM table_name
WHERE
('{}' = $1 OR col = ANY($1))
这将返回pq: op ANY/ALL (array) requires array on right side
。
如果我运行
SELECT * FROM table_name
WHERE
(col = ANY($1))
这很好,我得到了我期望的内容。
我也可以使用array_length
,但是它会要求我断言$ 1中的数据类型。如果我做(array_length($1::string[],1) < 1 OR col = ANY($1))
,它似乎总是在array_length上返回false并继续进行col = ANY($1)
如何仅返回$ 1的值,或者如果$ 1是'{}'
或NULL,则如何返回所有值?
答案 0 :(得分:-1)
知道了
($1::string[] IS NULL OR event_id = ANY($1))