none
Quebrando arvóre de categoria RRS feed

  • Pergunta

  • <object height="0" id="bb9b395a-fa59-a088-d918-5ab7aaad9180" type="application/gas-events-bb" width="0"></object>

    Boa tarde pessoal. 

    Eu sei que existe uma função que faz o que pretendo, sem pecisar usar split. Se alguém lembrar e puder dar um help, eu agradeço.

    Tenho uma árvore de categorias cujos níveis são concatenados através de . (ponto).

    Ex: TI.Unicenter Service Desk.Sistema Indisponível

    Gostaria de quebrar cada nó em uma coluna. 

    Ex: 

    |Nível 1 |           Nível 2     |  Nível 3

    |    TI     | Unicenter Service Desk | Sistema Indisponível

    Obrigado.


    quinta-feira, 9 de janeiro de 2014 18:26

Respostas

  • Lucas,

    Acredito que o SPLIT seja a solução, mas veja se este exemplo ajuda:

    Declare @Resultado Table (Numero Int) 
    
    Declare @ListaValores VarChar(50), @PosicaoAtual Int             
    
    Set @ListaValores='25,3545,45,6015,2569,14535,2544,4878,15'
    
    While CharIndex(',',@ListaValores,0) <> 0
     Begin 
      Set @PosicaoAtual = SubString(@ListaValores,1,CharIndex(',',@ListaValores,0)-1) 
      Set @ListaValores = SubString(@ListaValores,CharIndex(',',@ListaValores,0)+1,Len(@ListaValores)) 
    
      If Len(@PosicaoAtual) > 0
        Insert Into @Resultado Values (Convert(Int, @PosicaoAtual))    
     End 
    
      If Len(@ListaValores) > 0
        Insert Into @Resultado Values (Convert(Int,@ListaValores))
        
    Select * from @Resultado


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Sugerido como Resposta Edinaldo Junior sexta-feira, 10 de janeiro de 2014 18:50
    • Marcado como Resposta Giovani Cr sexta-feira, 17 de janeiro de 2014 19:14
    sexta-feira, 10 de janeiro de 2014 18:48
  • Nao.. nao existe outra funçao para isso que nao seja o SPLIT.

    Qual é o problema em usar esta funçao?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Sugerido como Resposta Edinaldo Junior sexta-feira, 10 de janeiro de 2014 18:49
    • Marcado como Resposta Giovani Cr sexta-feira, 17 de janeiro de 2014 19:14
    quinta-feira, 9 de janeiro de 2014 19:12

Todas as Respostas

  • Nao.. nao existe outra funçao para isso que nao seja o SPLIT.

    Qual é o problema em usar esta funçao?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Sugerido como Resposta Edinaldo Junior sexta-feira, 10 de janeiro de 2014 18:49
    • Marcado como Resposta Giovani Cr sexta-feira, 17 de janeiro de 2014 19:14
    quinta-feira, 9 de janeiro de 2014 19:12
  • Lucas,

    Acredito que o SPLIT seja a solução, mas veja se este exemplo ajuda:

    Declare @Resultado Table (Numero Int) 
    
    Declare @ListaValores VarChar(50), @PosicaoAtual Int             
    
    Set @ListaValores='25,3545,45,6015,2569,14535,2544,4878,15'
    
    While CharIndex(',',@ListaValores,0) <> 0
     Begin 
      Set @PosicaoAtual = SubString(@ListaValores,1,CharIndex(',',@ListaValores,0)-1) 
      Set @ListaValores = SubString(@ListaValores,CharIndex(',',@ListaValores,0)+1,Len(@ListaValores)) 
    
      If Len(@PosicaoAtual) > 0
        Insert Into @Resultado Values (Convert(Int, @PosicaoAtual))    
     End 
    
      If Len(@ListaValores) > 0
        Insert Into @Resultado Values (Convert(Int,@ListaValores))
        
    Select * from @Resultado


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Sugerido como Resposta Edinaldo Junior sexta-feira, 10 de janeiro de 2014 18:50
    • Marcado como Resposta Giovani Cr sexta-feira, 17 de janeiro de 2014 19:14
    sexta-feira, 10 de janeiro de 2014 18:48