marcio, isso só me mostrou que não sei nada! Obrigada por ajudar a decifrar.
Cris ----- Original Message ----- From: Marcio Portes To: oracle_br@yahoogrupos.com.br Sent: Friday, March 17, 2006 12:26 PM Subject: [oracle_br] Re: ask tom Desculpe pela demora. Muuuuita escravidao por aqui. Quebre as queries. Sao tres. A primeira está verificando a posicao das ocorrências da virgula (primeira e segunda) e do ultimo espaco. [EMAIL PROTECTED]> select x, 2 instr( x, ',', 1, 1 ) c1, 3 instr( x, ',', 1, 2 ) c2, 4 instr( x, ' ', -1,1 ) s 5 from t 6 / X C1 C2 S -------------------------------------------------- ----- ----- ----- 9 Main Street, Watertown, MA 02472 14 25 29 1 row selected. Entao temos as posicoes 14, 25 e 29. Vamos ver o que representa na string. 9 Main Street, Watertown, MA 02472 ^ ^ ^ 1234567890123456789012345678901234567890 1 2 3 4 Como demonstrado sao as virgulas e o ultimo espaco. Na proxima query ele esta verificando se as virgulas existem e esta tratando caso nao existam. [EMAIL PROTECTED]> select x, 2 decode(c1,0,null,c1) c1, 3 decode(c2,0,decode(s,0,null,s),c2) c2, 4 decode(s,0,null,s) s 5 from ( 6 select x, 7 instr( x, ',', 1, 1 ) c1, 8 instr( x, ',', 1, 2 ) c2, 9 instr( x, ' ', -1,1 ) s 10 from t 11 ) 12 / X C1 C2 S -------------------------------------------------- ---------- -------- -- ---------- 9 Main Street, Watertown, MA 02472 14 25 29 1 row selected. E finalmente ele esta apresentando o resultado com o substr - somando e subtraindo conforme a posicao das colunas e o que ele esta querendo apresentar. [EMAIL PROTECTED]> [EMAIL PROTECTED]> select x, 2 trim(substr(x,1,c1-1)) x1, 3 trim(substr(x,c1+1,c2-c1-1)) x2, 4 substr(x,s+1) x3 5 from ( 6 select x, 7 decode(c1,0,null,c1) c1, 8 decode(c2,0,decode(s,0,null,s),c2) c2, 9 decode(s,0,null,s) s 10 from ( 11 select x, 12 instr( x, ',', 1, 1 ) c1, 13 instr( x, ',', 1, 2 ) c2, 14 instr( x, ' ', -1,1 ) s 15 from t 16 ) 17 ) 18 / X X1 X2 X3 -------------------------------------------------- --------------- --- ------------ --------------- 9 Main Street, Watertown, MA 02472 9 Main Street Watertown 02472 1 row selected. --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> escreveu > > entao, não entendi o sql, gostaria de entender. > ----- Original Message ----- > From: Marcio Portes > To: oracle_br@yahoogrupos.com.br > Sent: Wednesday, March 15, 2006 7:31 PM > Subject: Re: [oracle_br] ask tom > > > Quem pergunta quer o endereço quebrado quando encontra virgula e espaço por > último. > E o Tom fez o sql para satisfazer a query. > > On 3/15/06, ESTUDO <[EMAIL PROTECTED]> wrote: > > > > Genteee > > > > Tava lendo o artigo do Tom, e não entendi nada sobre a pergunta/resposta > > abaixo. Quem puder ajudar .. detesto ficar com duvidas! > > > > > > Let's say I have addresses stored as such: > > > > 9 Main Street, Watertown, MA 02472 > > > > I want to break out the components > > > > 9 Main Street > > Watertown > > MA > > 02742 > > > > I can't use substr because I don't know each length. Is there a way use > > the > > commas? > > > > Thanks. > > > > I think that's the problem, we don't enforce any rules re: input. But, if > > we > > could at least break wherever there's a comma, and then assume that zip > > will > > always be last. > > > > and we said... > > > > [EMAIL PROTECTED]> select x, > > 2 trim(substr(x,1,c1-1)) x1, > > 3 trim(substr(x,c1+1,c2-c1-1)) x2, > > 4 substr(x,s+1) x3 > > 5 from ( > > 6 select x, > > 7 decode(c1,0,null,c1) c1, > > 8 decode(c2,0,decode(s,0,null,s),c2) c2, > > 9 decode(s,0,null,s) s > > 10 from ( > > 11 select x, > > 12 instr( x, ',', 1, 1 ) c1, > > 13 instr( x, ',', 1, 2 ) c2, > > 14 instr( x, ' ', -1,1 ) s > > 15 from t > > 16 ) > > 17 ) > > 18 / > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > ---------------------------------------------------------------- ---------------------------------------------------------- > > Atenção! As mensagens deste grupo são de acesso público e de inteira > > responsabilidade de seus remetentes. > > Acesse: http://www.mail- archive.com/oracle_br@yahoogrupos.com.br/ > > > > ---------------------------------------------------------------- ---------------------------------------------------------- __________________________________________________________________ > > > > Este Grupo recebe o apoio da SQL Magazine - > > www.devmedia.com.br/sqlmagazine > > __________________________________________________________________ > > > > Links do Yahoo! Grupos > > > > > > > > > > > > > > > > > > > -- > Marcio Portes > Material Tecnico em Portugues - http://mportes.blogspot.com > Practical Learning Oracle - > http://mportes.blogspot.com/2006/02/practical-learning-oracle.html > > > [As partes desta mensagem que não continham texto foram removidas] > > > > ------------------------------------------------------------------ -------------------------------------------------------- > Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > ------------------------------------------------------------------ -------------------------------------------------------- __________________________________________________________________ > > Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine > __________________________________________________________________ > > > > Yahoo! Grupos, um serviço oferecido por: > PUBLICIDADE > > > > > -------------------------------------------------------------------- ---------- > Links do Yahoo! Grupos > > a.. Para visitar o site do seu grupo na web, acesse: > http://br.groups.yahoo.com/group/oracle_br/ > > b.. Para sair deste grupo, envie um e-mail para: > [EMAIL PROTECTED] > > c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. > > > > [As partes desta mensagem que não continham texto foram removidas] > -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __________________________________________________________________ Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE ------------------------------------------------------------------------------ Links do Yahoo! Grupos a.. Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ b.. Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. [As partes desta mensagem que não continham texto foram removidas] -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __________________________________________________________________ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html