Comment trouver le nombre d’occurrences d’une chaîne de caractères dans MySQL? J’en avais déjà parlé ici en français et aussi en anglais.
Pour se faciliter la vie, rien de mieux qu’une fonction pour faire le travail!
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='STRICT_TRANS_TABLES'; DROP FUNCTION IF EXISTS occurrencesOf; DELIMITER // CREATE FUNCTION occurrencesOf ( sourceString VARBINARY(255), searchString VARBINARY(255)) RETURNS MEDIUMINT UNSIGNED DETERMINISTIC LANGUAGE SQL CONTAINS SQL SQL SECURITY DEFINER COMMENT 'Returns the number of occurrences of <searchString> inside <sourceString>' BEGIN DECLARE occ MEDIUMINT UNSIGNED; SELECT FLOOR(( CHAR_LENGTH(sourceString) - CHAR_LENGTH(REPLACE(sourceString, searchString, '')) ) / (CHAR_LENGTH(searchString))) INTO occ; RETURN occ; END // DELIMITER ; SET SQL_MODE=@OLD_SQL_MODE;
P.S. J’ai l’intention de publier plusieurs fonctions utilitaires du genre. D’ici à ce que je m’organise sur GitHub, je publierai le code de ces procédures et/ou fonctions ici en attendant!