RES: [oracle_br] Ajuda - SQL

2016-04-11 Por tôpico Fernando - Unisul ferna...@unisul.br [oracle_br]
Oi Emerson, fiz uma função para fazer o que você deseja

 

 

Passo os parâmetros (lista de valores (string) , qual a posição do token que 
quero ler, e por ultimo qual o delimitador que irei usa)

 

Exemplo

 

Pegar o cpf de cada registro

 

Cpf := fc_get_token(t_1 ,4,` | `);

 

 

create or replace function fc_get_token(

   listaValores_in  varchar2,

   posicao_in   number,

   delimitador_in   varchar2 := ','

) returnvarchar2

is

   inicioPosicao number;

   fimPosicaonumber;

begin

   if posicao_in = 1 then

   inicioPosicao := 1;

   else

   inicioPosicao := instr(listaValores_in, delimitador_in, 1, posicao_in - 
1);

   if inicioPosicao = 0 then

   return null;

   else

   inicioPosicao := inicioPosicao + length(delimitador_in);

   end if;

   end if;

 

   fimPosicao := instr(listaValores_in, delimitador_in, inicioPosicao, 1);

 

   if fimPosicao = 0 then

   return substr(listaValores_in, inicioPosicao);

   else

   return substr(listaValores_in, inicioPosicao, fimPosicao - 
inicioPosicao);

   end if;

exception

   when others then

raise_application_error(-20001,'Erro Busca Token ' || sqlerrm);

 

end fc_get_token;

 

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] 
Enviada em: quinta-feira, 7 de abril de 2016 16:01
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Ajuda - SQL

 

  

Boa Tarde Diego,

 

 Tenho uma função que faz a busca de parte de uma string que pode te ajudar. 

 

segue abaixo, o link:

http://blog.gaudencio.net.br/2015/11/oracle-funcao-para-retornar-partes-de.html

 

 

Em 7 de abril de 2016 14:57, Diego Melo diegopm...@gmail.com 
  [oracle_br] mailto:oracle_br@yahoogrupos.com.br> > escreveu:

  

Olá galera, tudo bem ?

 

Por gentileza, poderiam me ajudar em um SQL. 

 

Minha versão do Oracle é:

 

Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi

PL/SQL Release 10.2.0.5.0 - Production

"CORE 10.2.0.5.0 Production"

TNS for Linux: Version 10.2.0.5.0 - Production

 

Tenho uma tabela com uma string e diversos campos separados por | (pipe)

 

Preciso trazer cada campo em uma coluna. Eu até consegui uma maneira, o 
problema é que quando um registro não tem o campo preenchido e a string traz 
||, ai da ruim na minha solução. Detalhe, eu não posso atlerar a string 
original  

 

Alguém teria uma solução em Oracle SQL ??

 

Fiz do seguinte modo:

 

 

CREATE TABLE t_1 ( strings varchar2(4000));
/
INSERT INTO t_1
VALUES ('99|151|JOANA PRADO |08227525490  |BRA|0||');
 
INSERT INTO t_1
VALUES ('99|152|LUCIANA XIMENES SILVA||BRA|0||');
 
INSERT INTO t_1
VALUES ('99|153|JULIA ROBERTS|44303539805|USA|0||');
 
COMMIT;
 
SELECT regexp_substr(strings,'[^|]+',1,1) identificador,
   regexp_substr(strings,'[^|]+',1,2) id,
   regexp_substr(strings,'[^|]+',1,3) nome,
   regexp_substr(strings,'[^|]+',1,4) cpf,
   regexp_substr(strings,'[^|]+',1,5) pais,
   regexp_substr(strings,'[^|]+',1,6) tipo
FROM t_1

 

 

Reparem que o registro id 152 não tem cpf e ai o campo de pais acaba 
ocupando o espaço do CPF. 

 

Grato. 

 

Diego

 

 

 

 





RES: [oracle_br] Ajuda SQL

2008-06-24 Por tôpico Rafael Almeida Milanez
É apenas um exemplo,
 
Com base na idéia voce melhora o SQL um pouco
 
Segue:
 
SQL>select * from t1;
 
  DNFV NR_SEQ
-- --
  5405  1
  5102  2
  5405  2
  5405  3
 
 SQL>select nr_seq,
  2  max(decode(seq,1,dnfv)) || ' ' ||
  3 max(decode(seq,2,dnfv)) || ' ' ||
  4 max(decode(seq,3,dnfv)) || ' ' || nr_seq Result
  5  from (
  6select nr_seq,
  7   dnfv,
  8   row_number() over
  9   (partition by nr_seq order by dnfv) seq
 10from t1
 11 )
 12  group by nr_seq
 13  order by 1;
 
NR_SEQ RESULT
-- 
 1 5405   1
 2 5102 5405  2
 3 5405   3
 



De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Renato 
Tecedor
Enviada em: segunda-feira, 23 de junho de 2008 11:38
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Ajuda SQL



Pessoal estou com uma dificuldade para criar uma consulta no meu banco aonde
eu gostaria que retornasse o valor da coluna concatenado na mesma linha
quando o numero da sequência fosse igual. por exemplo

hoje ele esta assim:

SQL> select dnfv_cd_cfop,dnfv_nr_seq_seq
2 from det_nota_fiscal_vendas
3 where dnfv_cd_empresa = 1
4 and dnfv_id_nota_fiscal = 'N'
5 and dnfv_nr_seq_nota = 116026
6 group by dnfv_cd_cfop,dnfv_nr_seq_seq
7 order by dnfv_nr_seq_seq;

DNFV DNFV_NR_SEQ_SEQ
 ---
5405 1
5102 2
5405 2
5405 3

e gostaira que me retornasse assim:

DNFV DNFV_NR_SEQ_SEQ

5405 1
5102/5405 2
5405 3

Obrigado,
Renato

[As partes desta mensagem que não continham texto foram removidas]



 


[As partes desta mensagem que não continham texto foram removidas]