Quantidade de Ocorrências

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
moacirm
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qua, 11 Jan 2006 9:41 am
Localização: Joinville - SC

Algém sabe me dizer se existe alguma função do Oracle que retorna o numero de ocorrências de uma letra ou numero dentro de uma string?

Ex: tenho uma string '12341325448' e quero saber quantas vezes aparecem o numero '4'.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Não possui essa função.

Mas é possível facilmente você criar uma função que faça isso, pois no oracle existe a função INSTR. (que retorna qual é a posição de uma string dentro de outra)...

Ou seja, basta você fazer um LOOP e contar.

Neste caso, vai procurar onde está a letra C na string passada.

Selecionar tudo

SQL> SELECT INSTR('ABCDEFG', 'C') FROM DUAL
  2  /

INSTR('ABCDEFG','C')
--------------------
                   3

SQL> 
Neste caso, vai procurar onde está a letra C dentro da string, começando pelo caracter 4 em diante.

Selecionar tudo

SQL> SELECT INSTR('ABCDEFGxxxABCD', 'C', 4) FROM DUAL;

INSTR('ABCDEFGXXXABCD','C',4)
-----------------------------
                           13

SQL> 
:-o
mportes
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 13
Registrado em: Ter, 01 Nov 2005 11:53 pm
Localização: São Paulo
Contato:

Quem sabe assim?

Selecionar tudo

SQL> select length('12341325448') - length(replace('12341325448', '4', null)) from dual;

LENGTH('12341325448')-LENGTH(REPLACE('12341325448','4',NULL))
-------------------------------------------------------------
                                                            3

1 row selected.
anderson.diniz
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Qua, 10 Jun 2009 12:12 pm
Localização: UBERLANDIA - MG
Anderson Diniz Nunes

Marcio Portes

tu é o cara .. valeu demais ...
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes