我正在尝试实现基于输入数组选择数据的行为,或者如果数组为空或为空,则获取所有数据。
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 中的值或全部还是空?
最佳答案
知道了:($1::string[] IS NULL OR event_id = ANY($1))
关于sql - PostgreSQL 检查 Golang 中的空数组更改行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59205717/