数组 – 检查值是否存在于Postgres数组中

前端之家收集整理的这篇文章主要介绍了数组 – 检查值是否存在于Postgres数组中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要一种方法来测试一个值是否存在于给定的数组中。到目前为止,我想到了这样的东西
select '{1,2,3}'::int[] @> (ARRAY[]::int[] || value_variable::int)

但我一直认为应该有一个更简单的方法,这一点,我只是看不到它。

编辑:只是意识到我可以做到这一点

select '{1,3}'::int[] @> ARRAY[value_variable::int]

这是更好的,我相信足够了,但如果你有其他的方式做到这一点,请分享

更简单的 ANY construct
SELECT value_variable = ANY ('{1,3}'::int[])

ANY的右操作数(括号之间)可以是set (result of a subquery,for instance)array.有几种使用方式:

> SQLAlchemy: how to filter on PgArray column types?

重要区别:Array operators (<@,@> et al.)期望数组类型作为操作数和support GIN or GiST indices在Postgresql的标准分布,而ANY构造期望元素类型作为左操作数,并且不支持这些索引。例:

> Index for finding an element in a JSON array

这些都不适用于NULL元素。要测试NULL:

> Check if NULL exists in Postgres array

猜你在找的Postgre SQL相关文章