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

 


Responder a