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.