Carregando...
Banco de DadosPostgreSQL

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 entretato 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,
LATERAL JOIN (SELECT 
  t.text LIKE 'a%' OR
  t.text LIKE 'b%' OR
  t.text LIKE 'c%' AS match
) c
WHERE match IS TRUE
;
Deixe um comentário

O seu endereço de e-mail não será publicado.