In MySQL, le espressioni booleane possono essere utilizzate come numeri interi, con 0 per false e 1 per true. Quindi, il seguente funziona:
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%';
MODIFICA:
Se MySQL, puoi anche esprimere questa query come:
SELECT p.*,
((name LIKE '%samsung%') + (name LIKE '%galaxy%') + (name LIKE '%s4%')) as hits
FROM myprods p
HAVING hits > 0;
L'uso di having
in questo contesto è un'estensione SQL e non funziona in altri database. Tuttavia, consente a una query di fare riferimento a un alias di colonna per il filtraggio, senza utilizzare una sottoquery.