sql - Postgres - 检查数组是否包含预期值以外的值

标签 sql database postgresql

假设一个条目具有数组值 {1, 2, 3}。

我希望能够查询这个问题:

“数组中是否包含 1 和 2 以外的数字?” (是的)

这也适用于我的目的:

“这个数组是否只包含 1、2、3 和 4 以外的值?” (是的 - 即使没有使用 4 也可以)

我环顾四周,没能找到这种在数组中搜索的特殊变体。有没有一种有效的方法来做到这一点?

编辑:我一起破解了一个解决方案,我取消嵌套数组,并从未嵌套的行中选择一个 != ANY 来匹配我的条件,但它似乎不是很优雅,我希望有其他选择!

最佳答案

只是一个选项,您可以尝试使用 EXCEPTUNNEST

SELECT CASE 
        WHEN count(*) > 0
            THEN TRUE
        ELSE FALSE
        END IN_A_NOT_IN_B
FROM (
    SELECT unnest(array [1,2,3])
        EXCEPT
    SELECT unnest(array [1,2])
    ) t;

如果你反转它,你的第二个条件将为真。

关于sql - Postgres - 检查数组是否包含预期值以外的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49473189/

相关文章:

c - postgres共享连接问题

sql - 为什么更改我的表模式会减慢我的查询速度?

Java Oracle 本地主机连接错误 (ORA-12505)

SQL 查询以检索单行的多个重复 ID

MySQL从多表、主表和元表查询

sql-server - 字段未修复时使用 Pivot 的 SQL 查询

PostgreSQL - 排序困惑的数据(递归?)

postgresql - 如何在 PostgreSQL 中临时禁用外键和主键约束?

mysql - 检索 SQL 列中特定值的百分位

sql - 如何在 Oracle 中通过 SQL 获取表注释?