sql - PostgreSQL 检查 Golang 中的空数组更改行为

标签 sql postgresql go

我正在尝试实现基于输入数组选择数据的行为,或者如果数组为空或为空,则获取所有数据。

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/

相关文章:

linux - 为什么 PostgreSQL 的 shell 显示不同的操作系统版本而不是我的真实操作系统?

go - 为 OpenSSL 的 EVP API 使用配置文件

sql - 具有相同属性的 "list"的转置表

sql - 奇怪的 ORA-00907 : missing right parenthesis

mysql - 无法理解在mysql查询中使用聚合函数的结果

mysql - 将日期转换为周

java - 将数据从 Java 类插入数据库

sql - 找到有条件的不间断期

amazon-web-services - golang附加到二维 slice

go - 将HTML转换为PDF并下载PDF文件