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*
