Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Cláusula LIKE do MySQL e palavras separadas em um campo


Você pode usar um REGEXP para corresponder a qualquer uma das palavras em sua string de pesquisa:
select *
from tbl
where
  title REGEXP CONCAT('[[:<:]](', REPLACE('Acme burger', ' ', '|'), ')[[:>:]]')

Observe que isso não será muito eficiente. Veja violino aqui .

Se você precisar corresponder a cada palavra em sua string, poderá usar uma consulta como esta:
select *
from tbl
where
  title REGEXP CONCAT('[[:<:]]', REPLACE('Acme burger', ' ', '[[:>:]].*[[:<:]]'), '[[:>:]]')

Fiddle aqui . Mas as palavras devem estar na ordem correta (por exemplo, 'Acme burger' corresponderá, 'burger Acme' não). Há um REGEXP para corresponder a cada palavra em qualquer ordem, mas não é suportado pelo MySql, a menos que você instale um UDF que suporte regexp Perl.