Mysql
 sql >> Database >  >> RDS >> Mysql

Conta il numero di corrispondenze LIKE per Entry

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.