postgres select 在 varchar[] 列中具有任何列表字符串的所有行

postgres select all rows that has any of list strings in a varchar[] column

create table Table1(id bigserial not null primary key, names VARCHAR(256)[]);

insert into Table1(names) values('{name1,name2}');

insert into Table1(names) values('{name3,name4}');

select * from Table1 where names @> '{name1}';

结果

id | name

---+-----

1  | {name1,name2}

我希望能够提供 varchar 列表,例如 name1、name3 和 select 查询应该 return 两行

您可以使用重叠运算符 &&:

where names && array['name1', 'name3']::varchar[];