Diego, tudo bem?

Já fiz isso usando a função INSTR do PL/SQL.
Era algo que combinava as funções INSTR SUBSTR e REPLACE
Não tenho o exemplo aqui agora, mas a dinâmica é algo do tipo:

Com o INSTR vc consegue obter a posição da ocorrência do "||" (duplo pipe).
No seu caso, retornaria 33, se não me engano. Daí, com o REPLACE e o
SUBSTR, vc consegue substituir os caracteres das posições 33 e 34 (||) por
um NULL, por exemplo.
Dê uma olhada na função REGEXP_INSTR tb. Ela pode ajudar.

Abraços, e desculpe por não postar um exemplo aqui agora. Mas SUBSTR é o
caminho, rs.

[]'s

Em 7 de abril de 2016 16:24, Diego Melo diegopm...@gmail.com [oracle_br] <
oracle_br@yahoogrupos.com.br> escreveu:

>
>
> @Emerson,
>
> a sua função deu certo. Muito obrigado.
>
> @Angelo,
> quiando vem vazio, deve ficar null mesmo, o CPF foi só um exemplo que me
> veio na cabeça, mas são outros campos na verdade, que tem que vir vazio ou
> null mesmo.
>
> Valeu !!!!
>
> 2016-04-07 16:12 GMT-03:00 angelo angelolis...@gmail.com [oracle_br] <
> oracle_br@yahoogrupos.com.br>:
>
>>
>>
>> Boa tarde,  Diego,
>>
>> Será que ao invés de dar ruim na parada, não deu bom não?
>>
>> Pois não ficou claro sobre o que deveria acontecer no caso em que não
>> vier o cpf na string.
>>
>> To entendendo que se nao veio nada, entraria vazio mesmo, melhor, os
>> pipes.
>> Você está importando isso de algum arquivo edi ? Campo cpf veio vazio,  o
>> que entraria no lugar ? ou tinha cpf e nao inseriu ?
>>
>>
>> 99|1500002|LUCIANA XIMENES SILVA|o que fazer quando aqui for vazio? |BRA|0||
>>
>>
>>
>>
>>
>> 2016-04-07 15:57 GMT-03:00 Diego Melo diegopm...@gmail.com [oracle_br] <
>> oracle_br@yahoogrupos.com.br>:
>>
>>>
>>>
>>> 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_1VALUES ('99|1500001|JOANA PRADO |08227525490|BRA|0||');
>>> INSERT INTO t_1VALUES ('99|1500002|LUCIANA XIMENES SILVA||BRA|0||');
>>> INSERT INTO t_1VALUES ('99|1500003|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) tipoFROM t_1
>>>
>>>
>>>
>>> Reparem que o registro id 1500002 não tem cpf e ai o campo de pais acaba
>>> ocupando o espaço do CPF.
>>>
>>> Grato.
>>>
>>> Diego
>>>
>>>
>>>
>>>
>>
> 
>



-- 
Atenciosamente,
*Gustavo Guedes de Sene*
  • [oracle... Diego Melo diegopm...@gmail.com [oracle_br]
    • Re... angelo angelolis...@gmail.com [oracle_br]
      • ... Diego Melo diegopm...@gmail.com [oracle_br]
        • ... Gustavo Guedes guedescomputa...@gmail.com [oracle_br]
          • ... Gustavo Guedes guedescomputa...@gmail.com [oracle_br]
    • Re... Emerson dos Santos Gaudêncio emerson.fen...@gmail.com [oracle_br]
      • ... Fernando - Unisul ferna...@unisul.br [oracle_br]
    • [o... alvaro.rbsfi...@yahoo.com.br [oracle_br]

Responder a