DELIMITER //
DROP FUNCTION IF EXISTS `subStringCount`//
CREATE FUNCTION `subStringCount` (sequence VARCHAR(1000), word VARCHAR(100)) RETURNS INT(4)
DETERMINISTIC
CONTAINS SQL
BEGIN
DECLARE counter SMALLINT UNSIGNED DEFAULT 0;
DECLARE word_length SMALLINT UNSIGNED;
SET word_length = CHAR_LENGTH(word);
WHILE (INSTR(sequence,word) != 0) DO
SET counter = counter+1;
SET sequence = SUBSTR(sequence, INSTR(sequence,word)+word_length);
END WHILE;
RETURN counter;
END //
DELIMITER ;
Который можно выполнить, вызвав:
SELECT sum(subStringCount(fieldName,'subString')) FROM `table` WHERE 1