Desculpe: *INSTR é o caminho, rsrs.

[]'s

Em 7 de abril de 2016 19:24, Gustavo Guedes <[email protected]>
escreveu:

> 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 [email protected] [oracle_br] <
> [email protected]> 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 [email protected] [oracle_br] <
>> [email protected]>:
>>
>>>
>>>
>>> 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 [email protected] [oracle_br] <
>>> [email protected]>:
>>>
>>>>
>>>>
>>>> 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*
>



-- 
Atenciosamente,
*Gustavo Guedes de Sene*

Responder a