使用 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
我有一个“清单”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