Oi Francisco, Adaptando a solução do Chiappa, dá uma olhada nesse exemplo...
-- SQL> create table t1 (c1 varchar2(50)); Tabela criada. SQL> insert into t1 values ('primeiralinha 2 segundalinha 3 terceiralinha'); 1 linha criada. SQL> insert into t1 values ('primeiralinha'||chr(10)||'segundalinha'); 1 linha criada. SQL> insert into t1 values ('unica linha'); 1 linha criada. SQL> commit; Commit concluido. SQL> select * from t1; C1 -------------------------------------------------- primeiralinha segundalinha terceiralinha primeiralinha segundalinha unica linha 3 linhas selecionadas. SQL> select c1 from t1 where regexp_like(c1, chr(10)); C1 -------------------------------------------------- primeiralinha segundalinha terceiralinha primeiralinha segundalinha 2 linhas selecionadas. SQL> select 2 c1, 3 (length(c1) - nvl(length(replace(c1,chr(10),'')),0))/length(chr(10)) cnt 4 from t1 where regexp_like(c1, chr(10)); C1 CNT -------------------------------------------------- ---------- primeiralinha 2 segundalinha terceiralinha primeiralinha 1 segundalinha 2 linhas selecionadas. SQL> -- Funciona para contar ENTER's que é uma maravilha.... []s Braga 2009/5/21 jlchiappa <jlchia...@yahoo.com.br> > > > Bom, primeiro contagem de ocorrências de um dado caracter numa string : até > existem algumas funções que se poderia usar , dependendo ** fundamentalmente > ** da versão de banco, que pra variar vc não diz, mas a contagem só com > funções genéricas é franciscanamente SIMPLES, vc tira do comprimento da > string original o comprimento dela SEM o caracter desejado, kapluft , tipo + > ou - : > > select (length(:main_str) - > nvl(length(replace(:main_str,:srch_str,'')),0))/ > length(:srch_str) cnt > from dual; > > Isso em qquer versão, mas já se for banco 10g vc pode usar as funções de > regexp, há uma count lá... > > Já pra retornar cada posição de cada ocorrência vc terá, afaik, que ter uma > lógica de loop, ie : vc tem várias funções que retornam a posição de uma > dada ocorrência dum caracter (como a INSTR , ou algumas do pacote regexp no > 10g), vc teria que executar a função escolhida n vezes, uma pra cada > ocorrência - isso poderia ser um loop PL/SQL (a opção mais simples, afaik) > ou se exigido que seja em SQL apenas aí provavelmente vc teria que escrever > um SQL mais complexo, repetindo n vezes um select instr da string from dual, > já seria algo BEM mais complexo, mas possível, certamente. > > []s > > Chiappa > --- Em oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>, > francisco porfirio <francisco.porfi...@...> escreveu > > > > > Caros, > > > > Gostaria de um axulio de vocês. > > > > Estou precisando detectar as quebras de linhas da minha string. > > > > Consegui detecar apenas a primeira debra de linha atavés do instr. > > > > Alguem sabe informar se tem alguma função que me retorne a posição de > todos > > os caracter do tipo quebra de linha "chr(10)", ou que ao menos me informe > > quantas vezes esse caracter se repete na minha tring ? > > > > obrigado; > > > > -- > > Atenciosamente > > Francisco Porfirio Ribeiro Neto > [As partes desta mensagem que não continham texto foram removidas]