sql >> Base de Datos >  >> RDS >> Mysql

Cuente el número de coincidencias LIKE por entrada

En MySQL, las expresiones booleanas se pueden usar como números enteros, con 0 para falso y 1 para verdadero. Entonces, lo siguiente funciona:

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:

Si es MySQL, también puede expresar esta consulta como:

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

El uso de having en este contexto es una extensión de SQL y no funciona en otras bases de datos. Pero sí permite que una consulta se refiera a un alias de columna para filtrar, sin utilizar una subconsulta.