sql >> Databasteknik >  >> RDS >> Mysql

MYSQL Hur man matchar två ord i en mening

Frågan:

SELECT * 
FROM mytable 
WHERE mycolumn LIKE "%my%" 
and mycolumn LIKE "%school%";

kommer även att returnera meningar som:

  • "mysql school"
  • "mina gamla föräldrar"

Men vi vill inte ha dem.

Du kan prova detta:

SELECT * 
FROM mytable 
WHERE mycolumn regexp ' my |^my | my$'
and mycolumn regexp ' school |^school | school$'

Men om du i kolumnen mycolumn har meningar som:

  • Jag älskar min skola!

du bör tänka på att lägga till ett annat villkor:

SELECT * 
FROM mytable 
WHERE mycolumn regexp ' my |^my | my$'
and mycolumn regexp '[^a-zA-Z]school[^a-zA-Z]|^school | school$'


  1. MyISAM vs InnoDB för snabba insättningar och en sammansatt unik nyckel

  2. Övervakning av läs/skrivfördröjning

  3. MySQL-jämförelse med nullvärde

  4. Söker efter datumintervallkonflikter i MySQL