0

I'd like to know if there is a way to check if there is at least one string in list a which matches in list b.

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

In the case above I'm only checking 1 value against a list.

But if I try as below I got error.

=> 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));

How do I perform this query??

Thanks in advance

GMB
  • 216,147
  • 25
  • 84
  • 135
Aureliano Guedes
  • 767
  • 6
  • 22

1 Answers1

2

You could use arrays instead of lists, and the overlaps operator:

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

Yields

true

If you are starting from comma-delimited strings, you can use string_to_array() first:

select string_to_array('1,3', ',') && string_to_array('1,2', ',')
GMB
  • 216,147
  • 25
  • 84
  • 135