Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Contar o número de correspondências LIKE por entrada


No MySQL, expressões booleanas podem ser usadas como inteiros -- com 0 para false e 1 para true. Assim, os seguintes trabalhos:
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%';

EDITAR:

Se MySQL, você também pode expressar esta consulta como:
SELECT p.*,
       ((name LIKE '%samsung%') + (name LIKE '%galaxy%') + (name LIKE '%s4%')) as hits
FROM   myprods p
HAVING hits > 0;

O uso de having neste contexto é uma extensão SQL e não funciona em outros bancos de dados. Mas permite que uma consulta se refira a um alias de coluna para filtragem, sem usar uma subconsulta.