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

Mysql LIKE-klausul og separate ord i et felt

Du kan bruge et REGEXP til at matche ethvert af ordene i din søgestreng:

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

Bemærk venligst, at dette ikke vil være særlig effektivt. Se violin her .

Hvis du har brug for at matche hvert ord i din streng, kan du bruge en forespørgsel som denne:

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

Violin her . Men ordene skal være i den rigtige rækkefølge (f.eks. 'Acme burger' vil matche, 'burger Acme' vil ikke). Der er et REGEXP, der matcher hvert ord i enhver rækkefølge, men det understøttes ikke af MySql, medmindre du installerer en UDF, der understøtter Perl regexp.



  1. node.js mySQL-forbindelse via en singleton

  2. Søg i et JSON-array efter et objekt, der indeholder en værdi, der matcher et mønster

  3. java mysql antal rækker

  4. En oversigt over Just-in-Time Compilation (JIT) til PostgreSQL