› Fóruns › Developer,Designer e Discoverer › Função contar caracteres
- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 20 anos, 3 meses atrás por
toadpunk.
-
AutorPosts
-
30 de agosto de 2005 às 8:38 pm #74528
jr_klein
ParticipanteAlgu?m sabe me dizer se existe alguma fun??o para contar quantas vezes um determinado caractere aparece em uma string.
Ex.
‘Teste de contagem’ o caractere ‘ ‘ aparece 2 vezes….
Obrigado,
M?rio R. Klein Jr.26 de dezembro de 2005 às 8:46 pm #74955toadpunk
ParticipanteEu n?o cheguei a testar t?!? Fiz baseado no seu problema!!
A? vai:
Primeiro voc? cria uma procedure assim:
--RETORNA QUANTAS VEZES FIND_TXT APARECE DENTRO DE SEQ_TXT
PROCEDURE CONTA_CHAR(SEQ_TXT IN VARCHAR2, FIND_TXT IN VARCHAR2) IS
V_NUMBER NUMBER;
TAM NUMBER;
POS NUMBER;BEGIN
V_NUMBER := 0; POS := 0;
TAM := LENGTH(SEQ_TXT);
IF TAM > 0 THENLOOP
POS := INSTR(SEQ_TXT,FIND_TXT,POS + 1);IF POS > 0 THEN V_NUMBER := V_NUMBER + 1; ELSE EXIT; END IF;END LOOP;
END IF;
RETURN V_NUMBER;
END;
E…usando seu exemplo:
DECLARE
QUANTIDADE NUMBER;BEGIN
QUANTIDADE := CONTA_CHAR('Teste de contagem',' ');
END;
A VARI?VEL QUANTIDADE SER? = 2
BEM COMO SE TEMOS AS VARI?VEIS:
NOME = ‘GRUPO DE PROFISSIONAIS’
ID = ‘SS’PODEMOS APLICAR:
QUANTIDADE := CONTA_CHAR(NOME,ID);
A VARI?VEL QUANTIDADE DEVE SER = 1
ESPERO TER AJUDADO.
ABRA?OS.
27 de dezembro de 2005 às 3:48 pm #74962toadpunk
ParticipanteVoc? cria a seguinte fun??o:
--RETORNA QUANTAS VEZES FIND_TXT APARECE DENTRO DE SEQ_TXTFUNCTION CONTA_CHAR(SEQ_TXT IN VARCHAR2, FIND_TXT IN VARCHAR2) RETURN NUMBER IS
V_NUMBER NUMBER;
TAM NUMBER;
POS NUMBER;BEGIN
V_NUMBER := 0; POS := 0;
TAM := LENGTH(SEQ_TXT);
IF TAM > 0 THENLOOP
POS := INSTR(SEQ_TXT,FIND_TXT,POS + 1);IF POS > 0 THEN V_NUMBER := V_NUMBER + 1; ELSE EXIT; END IF;END LOOP;
END IF;
RETURN V_NUMBER;
END;
E pode aplicar assim, por exemplo:
:block.resultado := to_char(conta_char(:block.nome,:block.nomefind));
Eu n?o tinha testado. Agora sim, e t? corrigido.
Abra?os.27 de dezembro de 2005 às 5:43 pm #74963toadpunk
ParticipanteS? melhorando um pouco…
--RETORNA QUANTAS VEZES FIND_TXT APARECE DENTRO DE SEQ_TXTFUNCTION CONTA_CHAR(SEQ_TXT IN VARCHAR2, FIND_TXT IN VARCHAR2) RETURN NUMBER IS
V_NUMBER NUMBER;
POS NUMBER;
FIND VARCHAR2;BEGIN
V_NUMBER := 0; POS := 0;
IF FIND_TXT IS NULL THEN
FIND := ' ';
ELSE
FIND := FIND_TXT;
END IF;LOOP
POS := INSTR(SEQ_TXT,FIND,POS + 1);
IF POS > 0 THEN
V_NUMBER := V_NUMBER + 1;
ELSE
EXIT;
END IF;
END LOOP;RETURN V_NUMBER;
END; -
AutorPosts
- Você deve fazer login para responder a este tópico.
› Fóruns › Developer,Designer e Discoverer › Função contar caracteres