Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Klauzula LIKE Mysql i oddzielne słowa w polu

Możesz użyć REGEXP, aby dopasować dowolne ze słów w wyszukiwanym ciągu:

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

Proszę zauważyć, że nie będzie to bardzo wydajne. Zobacz skrzypce tutaj .

Jeśli chcesz dopasować każde słowo w ciągu, możesz użyć zapytania takiego:

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

Fiddle tutaj . Ale słowa muszą być w odpowiedniej kolejności (np. „Acme burger” będzie pasować, „burger Acme” nie). Istnieje REGEXP pasujący do każdego słowa w dowolnej kolejności, ale nie jest obsługiwany przez MySql, chyba że zainstalujesz UDF, który obsługuje wyrażenie regularne Perl.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kopiowanie danych z jednej tabeli do innej tabeli. Bazy danych są różne, a struktura tabel jest inna

  2. Zapytania hierarchiczne w MySQL

  3. Jak napisać skrypt w pliku php, aby wyświetlić obraz, taki jak <img src=/img.php?imageID=32 />?

  4. jak radzić sobie z akcentami i dziwnymi znakami w bazie danych?

  5. Utknąłem z odmową dostępu dla użytkownika „root”@„localhost” — Terminal, Mac