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', ',')
我想知道是否有一种方法可以检查列表 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', ',')