PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Por que funciona diferente com ~~ any()?


O problema é que o resultado da sua subconsulta é interpretado como uma string, não como um array. Isso ocorre porque essas duas formas são semanticamente diferentes:
~~ ANY ('...')  -- will be interpreted as an array literal

e
~~ ANY (SELECT ...)  -- will compare with all query results in turn

Então você pode simplesmente escrever:
WHERE lower(name) ~~ ANY
      (SELECT DISTINCT '%' || lower(brand) || '%'
       FROM my_table
       WHERE source = 'Orig')