postgres 通过两个列表匹配(列表中的列表)

postgres match through two lists (list in list)

我想知道是否有一种方法可以检查列表 a 中是否至少有一个字符串与列表 b 匹配。

> select 1 IN (1,2);
 ?column? 
----------
 t
(1 row)

在上面的例子中,我只检查列表中的 1 个值。

但是如果我按照下面的方式尝试,我会出错。

=> select (1, 3) IN (1,2);
ERROR:  operator does not exist: record = integer
LINE 1: select (1, 3) IN (1,2);
                      ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.


=> select ANY((1, 3) IN (1,2));
ERROR:  syntax error at or near "ANY"
LINE 1: select ANY((1, 3) IN (1,2));

如何执行此查询?

提前致谢

您可以使用数组而不是列表,overlaps 运算符:

select array[1, 3] && array[1, 2];

产量

true

如果您是从逗号分隔的字符串开始,您可以先使用string_to_array()

select string_to_array('1,3', ',') && string_to_array('1,2', ',')