Como fazer operações com LIKE e IN ao mesmo tempo?
Formas de realizar LIKE com vários parâmetros ao mesmo tempo, utilizando-se de índices BTREE.
É útil para armazenamento de árvores em formato de texto.
O seguinte comando não é possível
SELECT *
FROM tabela
WHERE text LIKE IN ('a%', 'b%', 'c%');
E o seguinte é possível entretanto não utiliza os índices corretamente
SELECT *
FROM tabela
WHERE text LIKE ANY (ARRAY['a%', 'b%', 'c%']);
As alternativas mais adequadas que funcionam com índices são:
SELECT *
FROM tabela
WHERE text LIKE 'a%'
OR text LIKE 'b%'
OR text LIKE 'c%';
SELECT *
FROM tabela t
CROSS LATERAL JOIN (
SELECT t.text LIKE 'a%'
OR t.text LIKE 'b%'
OR t.text LIKE 'c%' AS match
) AS c
WHERE match IS TRUE;