使用 Postgres 9.0,我需要一种方法来测试给定数组中是否存在值。到目前为止,我想出了这样的事情:
select '{1,2,3}'::int[] @> (ARRAY[]::int[] || value_variable::int)
但我一直认为应该有更简单的方法来解决这个问题,只是我看不到它。这似乎更好:
select '{1,2,3}'::int[] @> ARRAY[value_variable::int]
我相信这就足够了。但如果您有其他方法,请分享!
最佳答案
ANY
更简单 构建:
SELECT value_variable = ANY ('{1,2,3}'::int[])
ANY
的右操作数(括号之间)可以是 set (result of a subquery, for instance)或 array .有几种使用方法:
重要区别:Array operators ( <@
, @>
, &&
et al.)期望 array 类型作为操作数和 support GIN or GiST indices在 PostgreSQL 的标准发行版中,ANY
构造需要一个 element 类型作为左操作数,并且可以使用普通 B 树索引来支持(索引表达式位于运算符的 left ,而不是相反就像在你的例子中一样)。示例:
这些都不适用于 NULL
元素。测试 NULL
:
关于sql - 检查 Postgres 数组中是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11231544/