Mysql
 sql >> Base de données >  >> RDS >> Mysql

Compter le nombre de correspondances LIKE par entrée

Dans MySQL, les expressions booléennes peuvent être utilisées comme des entiers -- avec 0 pour faux et 1 pour vrai. Ainsi, les travaux suivants :

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%';

MODIFIER :

Si MySQL, vous pouvez également exprimer cette requête comme :

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

L'utilisation de having dans ce contexte est une extension SQL et ne fonctionne pas dans d'autres bases de données. Cependant, cela permet à une requête de faire référence à un alias de colonne pour le filtrage, sans utiliser de sous-requête.