Il n’existe pas de fonction dans MySQL (et bien d’autres SGBD) pour trouver le nombre d’occurrences d’une chaîne de caractères dans une autre. Par exemple, combien de fois « ait » apparaît dans la chaîne « Il était grand mais il avait peur » ?
Ou, comme on me l’a récemment demandé sur IRC, vous cherchez à déterminer le nombre d’occurrences d’une sous-séquence particulière (par exemple, « TAT ») dans la séquence génomique suivante :
ATTGGTGGGCTCTACTAAGATATCAACGGGACTTCGGAGCGTGCCGCACTATTT
Évidemment, vous pouvez lire les données du SGBD puis faire la recherche en mémoire en utilisant votre langage de programmation préféré mais comment faire le tout en SQL ?
La solution est simple et elle a la forme suivante :
SELECT FLOOR(( LENGTH(source) - LENGTH(REPLACE(source, chaineAChercher, '')) ) / (LENGTH(chaineAChercher))) as occ …[Lire plus]