假设一个条目具有数组值 {1, 2, 3}。
我希望能够查询这个问题:
“数组中是否包含 1 和 2 以外的数字?” (是的)
这也适用于我的目的:
“这个数组是否只包含 1、2、3 和 4 以外的值?” (是的 - 即使没有使用 4 也可以)
我环顾四周,没能找到这种在数组中搜索的特殊变体。有没有一种有效的方法来做到这一点?
编辑:我一起破解了一个解决方案,我取消嵌套数组,并从未嵌套的行中选择一个 != ANY
来匹配我的条件,但它似乎不是很优雅,我希望有其他选择!
最佳答案
只是一个选项,您可以尝试使用 EXCEPT
和 UNNEST
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/