Postgresql 选择存在数组元素的所有行

Postgresql 选择存在数组元素的所有行,postgresql,Postgresql,我有一张桌子: CREATE TABLE test_array ( id integer, arr TEXT[] ); 我插入样本数据: INSERT INTO test_array(id, arr) VALUES (1, '{"a", "b", "c"}'); INSERT INTO test_array(id, arr) VALUES (2, '{"d", "f", "c"}'); INSERT INTO test_array(id, arr) VALUES (3, '{"a"

我有一张桌子:

CREATE TABLE test_array
(
  id integer,  
  arr TEXT[]
);
我插入样本数据:

INSERT INTO test_array(id, arr) VALUES (1, '{"a", "b", "c"}');
INSERT INTO test_array(id, arr) VALUES (2, '{"d", "f", "c"}');
INSERT INTO test_array(id, arr) VALUES (3, '{"a", "z", "i"}');
我想得到元素{“a”,“c”}存在的行, 因此,结果必须是:

'{"a", "b", "c"}'
'{"d", "f", "c"}'
'{"a", "z", "i"}'
我写查询:

select * from test_array where arr @> '{"a"}' or arr @> '{"c"}';
但是我想在一个条件下不使用
进行查询。可能吗

当我运行
时,从test_数组中选择*,其中arr@>{“a”,“c”}

它只返回我一行

@
表示“包含”,因此右侧数组中的所有元素都必须存在于左侧数组中。您正在寻找重叠
和&
运算符,该运算符“具有相同的元素”:

我更喜欢使用
array[]
符号来指定数组常数,因为我不需要考虑嵌套引号。

@
表示“包含”,因此右侧数组中的所有元素都必须存在于左侧数组中。您正在寻找重叠
和&
运算符,该运算符“具有相同的元素”:

我更喜欢使用
array[]
符号来指定数组常量,因为我不需要考虑嵌套引号

select * 
from test_array 
where arr && array['a', 'c'];