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 > > > > >