Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mysql LIKE-Klausel und getrennte Wörter in einem Feld

Sie könnten einen REGEXP verwenden, um eines der Wörter in Ihrer Suchzeichenfolge abzugleichen:

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

Bitte beachten Sie, dass dies nicht sehr effizient sein wird. Siehe Geige hier .

Wenn Sie jedes Wort in Ihrer Zeichenfolge finden müssen, können Sie eine Abfrage wie diese verwenden:

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

Fiddle hier . Aber die Wörter müssen in der richtigen Reihenfolge sein (z. B. „Acme Burger“ passt, „Burger Acme“ nicht). Es gibt einen REGEXP, der jedes Wort in beliebiger Reihenfolge abgleicht, aber er wird von MySql nicht unterstützt, es sei denn, Sie installieren eine UDF, die Perl-Regexp unterstützt.