sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Por qué funciona diferente con ~~ any()?

El problema es que el resultado de su subconsulta se interpreta como una cadena, no como una matriz. Esto se debe a que estas dos formas son semánticamente diferentes:

~~ ANY ('...')  -- will be interpreted as an array literal

y

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

Así que simplemente puedes escribir:

WHERE lower(name) ~~ ANY
      (SELECT DISTINCT '%' || lower(brand) || '%'
       FROM my_table
       WHERE source = 'Orig')