sql >> Database >  >> RDS >> Mysql

Mysql LIKE-clausule en afzonderlijke woorden in een veld

U kunt een REGEXP gebruiken om een ​​van de woorden in uw zoekreeks te matchen:

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

Houd er rekening mee dat dit niet erg efficiënt zal zijn. Zie fiddle hier .

Als u elk woord in uw tekenreeks moet zoeken, kunt u een zoekopdracht als deze gebruiken:

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

Fiddle hier . Maar woorden moeten in de juiste volgorde staan ​​(bijv. 'Acme burger' komt overeen, 'burger Acme' niet). Er is een REGEXP die overeenkomt met elk woord in elke volgorde, maar deze wordt niet ondersteund door MySql, tenzij u een UDF installeert die Perl-regexp ondersteunt.



  1. php 5.x 7.x, ssl pdo-fout:Peer-certificaat CN=`someName' kwam niet overeen met verwacht CN='someIP'

  2. Stel de tekenset en sortering van een kolom in MariaDB in

  3. SQL-query:volgorde op lengte van tekens?

  4. Hoe gegevens uit meerdere tabellen ophalen met behulp van een PHP-formulier?