postgres совпадение через два списка (список в списке) - PullRequest
0 голосов
/ 26 апреля 2020

Я хотел бы знать, есть ли способ проверить, есть ли хотя бы одна строка в списке 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));

Как мне выполнить этот запрос ??

Заранее спасибо

1 Ответ

1 голос
/ 26 апреля 2020

Вы можете использовать массивы вместо списков, а оператор overlaps:

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

Выход

true

Если вы начинаете со строк, разделенных запятыми, вы можете использовать string_to_array() сначала:

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