sql >> Base de Datos >  >> RDS >> Mysql

Cláusula LIKE de Mysql y palabras separadas en un campo

Puede usar REGEXP para hacer coincidir cualquiera de las palabras en su cadena de búsqueda:

select *
from tbl
where
  title REGEXP CONCAT('[[:<:]](', REPLACE('Acme burger', ' ', '|'), ')[[:>:]]')

Tenga en cuenta que esto no será muy eficiente. Ver fiddle aquí .

Si necesita hacer coincidir cada palabra en su cadena, podría usar una consulta como esta:

select *
from tbl
where
  title REGEXP CONCAT('[[:<:]]', REPLACE('Acme burger', ' ', '[[:>:]].*[[:<:]]'), '[[:>:]]')

Fiddle aquí . Pero las palabras deben estar en el orden correcto (es decir, 'hamburguesa Acme' coincidirá, 'hamburguesa Acme' no). Hay un REGEXP para hacer coincidir cada palabra en cualquier orden, pero MySql no lo admite, a menos que instale un UDF que admita Perl regexp.