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

Počítat počet LIKE zápasů na záznam

V MySQL mohou být booleovské výrazy použity jako celá čísla -- s 0 pro nepravdu a 1 pro pravdu. Funguje tedy následující:

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:

Pokud jde o MySQL, můžete tento dotaz vyjádřit také jako:

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

Použití having v tomto kontextu je rozšíření SQL a nefunguje v jiných databázích. Umožňuje však dotazu odkazovat na alias sloupce pro filtrování bez použití poddotazu.




  1. PostgreSQL 12:Cizí klíče a dělené tabulky

  2. Jak duplikovat databázi pomocí phpMyAdmin

  3. Strongloop:filtrování dat s podmínkami [a] a [nebo] dohromady

  4. Mysql:Najděte záznamy z konkrétního dne pomocí sloupce s časovým razítkem