使用 PostgreSQL,如何获取数组中某项的第一列的值?

With PostgreSQL, how would I get the value of column one with an item in an array?

我有一个“清单”table,有两列:id(bigint,主键)和 cards(数组)。

假设我的卡片列是:ARRAY['IZMI', 'IZCH', 'IZHI']

如何仅使用数组中的一项获取 ID,例如 'IZMI'

我的查询是什么?

有几种选择:

一种是使用ANY运算符:

select *
from inventory
where 'IZMI' = any(cards);

另一个是包含运算符@>

select *
from inventory
where cards @> array['IZMI'];

如果您需要搜索多个匹配项(所有匹配项都必须包含在 cards 中),第二个选项很有用。因此这将是一个 AND 类型比较。

最后是重叠运算符 &&

select *
from inventory
where cards && array['IZMI'];

与包含运算符相反,如果至少有一个元素匹配,则重叠运算符为真。因此,如果您需要 OR 类型比较,这很有用。

可以找到更多详细信息in the manual