Mysql
 sql >> Database >  >> RDS >> Mysql

Mysql LIKE clausola e parole separate in un campo

Puoi utilizzare un REGEXP per trovare una corrispondenza con una qualsiasi delle parole nella stringa di ricerca:

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

Si prega di notare che questo non sarà molto efficiente. Vedi violino qui .

Se hai bisogno di abbinare ogni parola nella tua stringa, puoi usare una query come questa:

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

Fiddle qui . Ma le parole devono essere nell'ordine corretto (es. "Acme burger" corrisponderà, "burger Acme" no). C'è un REGEXP per abbinare ogni parola in qualsiasi ordine, ma non è supportato da MySql, a meno che tu non installi un UDF che supporti l'espressione regolare Perl.