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

Sql Postgres-检查数组是否包含预期值以外的值,sql,database,postgresql,Sql,Database,Postgresql,假设一个条目具有数组值{1,2,3} 我希望能够询问这个问题: “数组是否包含除1和2以外的数字?”(是) 这也适用于我的目的: “此数组是否不包含除1、2、3和4以外的值?”(是-即使未使用4,也可以) 我环顾四周,没有找到数组中搜索的这种特殊变体。有没有一种有效的方法可以做到这一点 编辑:我已经拼凑了一个解决方案,在其中我取消了数组的测试,并从未测试的行中选择一个!=任何,但它似乎不是很优雅,我希望有其他选择 这只是一个选项,您可以尝试使用除了和unest SELECT CASE

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

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

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

这也适用于我的目的:

“此数组是否不包含除1、2、3和4以外的值?”(是-即使未使用4,也可以)

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


编辑:我已经拼凑了一个解决方案,在其中我取消了数组的测试,并从未测试的行中选择一个
!=任何
,但它似乎不是很优雅,我希望有其他选择

这只是一个选项,您可以尝试使用
除了
unest

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;

如果将其反转,则第二个条件为真。

请解释第二个条件好吗?“此数组是否包含除1、2和4以外的任何值?”,怎么会是“是”?你不是指{1,2,3}吗?对不起,你是对的,我本想说不。实际上,我本想提出完全不同的问题。改变了第二个问题,我的错。