Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql LIKE клауза и отделни думи в поле

Можете да използвате REGEXP, за да съответствате на някоя от думите във вашия низ за търсене:

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

Моля, обърнете внимание, че това няма да бъде много ефективно. Вижте цигулка тук .

Ако трябва да съпоставите всяка дума във вашия низ, можете да използвате заявка като тази:

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

Fiddle тук . Но думите трябва да са в правилния ред (напр. „Acme burger“ ще съвпада, „burger Acme“ – не). Има REGEXP, който да съответства на всяка дума в произволен ред, но той не се поддържа от MySql, освен ако не инсталирате UDF, който поддържа Perl regexp.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP PDO:как повторното изготвяне на изявление влияе на производителността

  2. Как да намерите най-често срещаните думи в MySQL база данни и да осредните втора колона

  3. Сума стойности на един ред?

  4. Как да направя една sql заявка за търсене по-мощна?

  5. Каква е разликата между операторите <> и !=в MySQL?