Para uma solução adequada, normalize o design do seu banco de dados ou, exceto isso, considere a pesquisa de texto completo .
Para uma solução rápida para o problema em questão, use um correspondência de expressão regular (
~
)
ou três simples LIKE
expressões:SELECT *
FROM subscriberfields
WHERE name ~ '(Khairpur|Islamabad|Karachi)';
Ou:
...
WHERE (name LIKE '%Khairpur%'
OR name LIKE '%Islamabad%'
OR name LIKE '%Karachi%')
Ou use
~*
ou ILIKE
para correspondência que não diferencia maiúsculas de minúsculas. Como outra resposta sugeriu:nunca use
SIMILAR TO
:- Usando SIMILAR TO para um regex ?
- Correspondência de padrões com LIKE, SIMILAR TO ou expressões regulares no PostgreSQL