Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zählen Sie die Anzahl der LIKE-Übereinstimmungen pro Eintrag

In MySQL können boolesche Ausdrücke als ganze Zahlen verwendet werden – mit 0 für falsch und 1 für wahr. Folgendes funktioniert also:

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%';

BEARBEITEN:

Bei MySQL können Sie diese Abfrage auch folgendermaßen ausdrücken:

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

Die Verwendung von having ist in diesem Zusammenhang eine SQL-Erweiterung und funktioniert nicht in anderen Datenbanken. Aber es erlaubt einer Abfrage, sich zum Filtern auf einen Spaltenalias zu beziehen, ohne eine Unterabfrage zu verwenden.