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

Tæl antal LIKE-kampe pr

I MySQL kan booleske udtryk bruges som heltal -- med 0 for falsk og 1 for sand. Så følgende virker:

SELECT p.*,
       ((name LIKE '%samsung%') + (name LIKE '%galaxy%') + (name LIKE '%s4%')) as hits
FROM   myprods p
WHERE  name LIKE '%samsung%' OR name LIKE '%galaxy%' OR name LIKE '%s4%';

EDIT:

Hvis MySQL, kan du også udtrykke denne forespørgsel som:

SELECT p.*,
       ((name LIKE '%samsung%') + (name LIKE '%galaxy%') + (name LIKE '%s4%')) as hits
FROM   myprods p
HAVING hits > 0;

Brugen af ​​having i denne sammenhæng er en SQL-udvidelse og virker ikke i andre databaser. Men det tillader en forespørgsel at henvise til et kolonnealias til filtrering uden at bruge en underforespørgsel.




  1. SQL-forespørgsel til at oversætte en liste over tal, der matches mod flere intervaller, til en liste med værdier

  2. Brug af MySQL relationelle databaser på Gentoo

  3. Vælg rækker fra én tabel, sammenslut den seneste række fra en anden tabel med en-til-mange-relation

  4. Vælg N. række fra en tabel i Oracle