sql >> Databáze >  >> RDS >> Mysql

Klauzule LIKE Mysql a samostatná slova v poli

Můžete použít REGEXP ke shodě s jakýmkoli slovem ve vašem hledaném řetězci:

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

Upozorňujeme, že to nebude příliš efektivní. Viz housle zde .

Pokud potřebujete porovnat každé slovo v řetězci, můžete použít dotaz jako tento:

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

Fiddle zde . Slova však musí být ve správném pořadí (např. 'Acme burger' bude odpovídat, 'burger Acme' nikoli). Existuje REGEXP, který odpovídá každému slovu v libovolném pořadí, ale není podporován MySql, pokud nenainstalujete UDF, který podporuje regexp Perl.



  1. group_concat byl přerušen při spuštění dotazu na tabulku

  2. Průvodce po MariaDB Columnstore pro správce MySQL

  3. CURRENT_TIMESTAMP v milisekundách v h2

  4. Jak načíst jedinečné řádky na základě kombinací hodnot sloupců?