[firebase-br] Procedure Remover Tags HTML - A saga continua...
Christian e Ana Luiza Britto
chriseana em gmail.com
Qua Jan 6 17:35:52 -03 2016
Olá Colegas,
Preciso de uma rotina que retire todos os tags html de um campo,
revomovendo tudo o que estiver dentro dos <> apenas (Os coódigos de
acentuação podem ser ignorados).
Seguindo os conselhos do colega Gladiston, poderia tentar uma função
externa. Mas, pretendo rodar o banco em diversas plataformas
(Mac/Win/Linux) o que dificulta o processo, pois precisaria compilar a
tunção em diferentes plataformas...
Decidi, então, fazer via Stored Procedure. Ficou assim:
CREATE OR ALTER PROCEDURE STRIPALLHTML (
htmlstring blob sub_type 1 segment size 80)
returns (
stripedstring blob sub_type 1 segment size 80)
as
declare variable tagbegin integer;
declare variable tagend integer;
declare variable tagfound blob sub_type 1 segment size 80 collate unicode_ci_ai;
begin
TagBegin = position ('<', HTMLString);
while (:TagBegin > 0) do
begin
TagEnd = position ('>', HTMLString, TagBegin);
TagFound = substring (HTMLString FROM TagBegin FOR ((TagEnd -
TagBegin) + 1));
HTMLString = replace (HTMLString, TagFound, '');
TagBegin = position ('<', HTMLString);
end
StripedString = HTMLString;
suspend;
end
Para chamá-la eu uso o seguinte comando:
select items.note, (SELECT stripedString FROM StripAllHTML
(items.note)) from items
A procedure retorna exatamente o resultado que eu preciso. O problema
é que está LENTA DEMAIS. Rodando em um banco com 400 itens o IBExpert
demora quase 2 minutos para dar o retorno... Em média cada campo NOTE
possui 2.000 caracteres...
Estou fazendo algo errado?
Podem dar uma DICA?
Abraços,
Christian
Mais detalhes sobre a lista de discussão lista