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'];