sql - 检查 Postgres 数组中是否存在值

标签 sql arrays postgresql

使用 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/

相关文章:

sql - 在 Postgresql 中逆透视

java - 数组越界问题

arrays - 仅当它是插入时如何推送数组元素

java - JPA - 创建了错误的表

postgresql - fe_sendauth : no password supplied

sql - presto sql中的cardinality()是什么?

sql - 在 HIVE 的子组中使用排名

sql - 显示每个 zip 中最高的 num_add 及其在 postgresql 中关联的 hrs 分数

mysql - 如何导入大型 .sql 文件

PHP:使用 usort 或从 UTF-8 字符串排序字母会导致未知字符