sql >> Databasteknik >  >> RDS >> Mysql

Räkna antal LIKE-matcher per bidrag

I MySQL kan booleska uttryck användas som heltal -- med 0 för falskt och 1 för sant. Så följande fungerar:

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:

Om MySQL kan du också uttrycka denna fråga som:

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

Användningen av having i detta sammanhang är en SQL-tillägg och fungerar inte i andra databaser. Men det tillåter en fråga att hänvisa till ett kolumnalias för filtrering, utan att använda en underfråga.




  1. MAKETIME() Exempel – MySQL

  2. Vad är InnoDB och MyISAM i MySQL?

  3. ändra tabellnamnet till versaler

  4. PHP PDO transaktion Duplicering