select prenom
from utilisateur
where upper(prenom) like upper('%on%')
=> Ca va retourner :
Lionel
Simon
Raymond
Oncle Charlie
Donc si tu as un champ contenant du blabla, tu peux faire un like sur un mot, et ça va retourner toutes les lignes dont le blabla contient le mot.
Par contre :
- Le like est très lent. A éviter absolument sur des champs de type "text" (champs blob jusqu'à 2 Go, qui ne peuvent être indexés)
- Le like ne retrouve que l'expression exacte. Donc si on cherche "MySQL", alors il ne trouvera pas la chaîne "mysql". Il faut alors faire un "upper()" du champ et de l'expression du LIKE, ce qui n'est pas là pour arranger les performances.
- Pour la même raison, si tu recherches "réponses", alors il ne trouvera pas "réponse".
Par contre, tu peux combiner à LIKE un SOUNDEX(), qui permet de retrouver une chaîne "qui se prononce pareil". soundex('activer') retournera 'activé'. Par contre, contraîrement au LIKE, le soundex ne peu porter que sur l'intégralité du champ, alors que le like porte sur une expression contenue dans le champ. Deplus, le SOUNDEX() est tout aussi lent que le LIKE (voir plus)
Bref, c'est la merde