Contar ocorrências de uma string em outra em MySql

0 respostas
W

Pessoal, estou com um pequeno problema:

Tenho um campo TEXT cujo conteúdo está em XML. Eu preciso eliminar as tags do XML e, como a quantidade tags(iguais) variam para cada registro, preciso saber a quantidade destas tags para removê-las e inserir o que sobrou em uma outra tabela.

Não posso realizar (devido à exigências) a tarefa buscando os registros por um programa em Java e limpar as tags.

Pensei em criar uma function que retorne a quantia de ocorrências de tal string em outra, mas está com erro de sintaxe:
DELIMITER $$

CREATE
    FUNCTION `tempdictionary`.`COUNT_SUBSTRING`(str TEXT, target VARCHAR) RETURNS INTEGER
    BEGIN
	DECLARE returnValue INTEGER DEFAULT 1;
	WHILE (SUBSTRING_INDEX(str, target, returnValue) LIKE ('%' & target & '%')) DO
		SET returnValue := returnValue + 1;
	END WHILE;
	RETURN (returnValue - 1);
    END$$

DELIMITER ;

Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') RETURNS INTEGER
BEGIN
DECLARE returnValue INTEGER default 1;
WHILE (SUBS' at line 2

Alguém sabe alguma outra solução? Ou qual o problema da função?

Criado 31 de outubro de 2012
Respostas 0
Participantes 1