none
Ocultar 2 ultimos caracteres de um campo com quantidade variavel de caracteres! RRS feed

  • Pergunta

  • Pessoal estou tentando ocultar os 2 ultimos caracteres de um campo que traz 3 ou 4 digitos, tentei via SUBSTRING e LEFT mas não obtive sucesso!

    Tenho um campo em uma tabela onde tenho so códigos de depto ex:

    COD      Depto
    2740 Itapecerica da Serra
    941 Campo de Fora
    5440 Valo Velho

    Preciso colocar estes codigos no padrão que é valor inicial + 01 ou seja 2740 tiro p 40 e fica 2701 e o 941 tiro o 41 e fica 901.

    Como tenho um campo com 3 e 4 digitos, preciso elimar somente os 2 ultimos e acescentar o 01.

    Alguém tem uma idéia melhor?

    Att.


    Moizés Cerqueira | MCP / MCTS SQL SERVER

    segunda-feira, 23 de janeiro de 2017 13:53

Respostas

  • Bom dia,

    Experimente utilizar a função Len para obter a quantidade de caracteres da coluna. Ex:

    LEFT(Coluna, LEN(Coluna) - 2) + '01'

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    segunda-feira, 23 de janeiro de 2017 13:55
  • Pessoal cheguei resultado usando o case não sei se seria a melhor opção mas me atendeu:

    CASE 
    WHEN LEN(Cod_Depto) =  4 THEN LEFT( Cod_Depto, 2) 
    ELSE LEFT( Cod_Depto,1) END + '01' AS Cod_Escola

    Como neste caso tem 3 ou 4 caracters me atendeu.

    5741 Ensino Fundamental 1º ao 5º - Vila das Belezas 187 5701
    5140 Educação Infantil - Taboão da Serra        187 5101
    1841 Ensino Fundamental 1º ao 5º - Capão Redondo 187 1801
    941 Ensino Fundamental 1º ao 5º - Campo de Fora 187 901


    Moizés Cerqueira | MCP / MCTS SQL SERVER

    segunda-feira, 23 de janeiro de 2017 14:07

Todas as Respostas

  • Bom dia,

    Experimente utilizar a função Len para obter a quantidade de caracteres da coluna. Ex:

    LEFT(Coluna, LEN(Coluna) - 2) + '01'

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    segunda-feira, 23 de janeiro de 2017 13:55
  • Bom dia, Moizés!

    Seria isso?

    Create Table #Aux
    (
    	Cod		Int
    	,Depto	VarChar(200)
    )
    
    Insert Into #Aux
    Values
    	(2740, 'Itapecerica da Serra')
    	,(941, 'Campo de Fora')
    	,(5440, 'Valo Velho')
    
    
    Select	Concat(Left(Cod, Len(Cod) - 2), '01')
    	,*
    From	#Aux


    segunda-feira, 23 de janeiro de 2017 13:57
  • Pessoal cheguei resultado usando o case não sei se seria a melhor opção mas me atendeu:

    CASE 
    WHEN LEN(Cod_Depto) =  4 THEN LEFT( Cod_Depto, 2) 
    ELSE LEFT( Cod_Depto,1) END + '01' AS Cod_Escola

    Como neste caso tem 3 ou 4 caracters me atendeu.

    5741 Ensino Fundamental 1º ao 5º - Vila das Belezas 187 5701
    5140 Educação Infantil - Taboão da Serra        187 5101
    1841 Ensino Fundamental 1º ao 5º - Capão Redondo 187 1801
    941 Ensino Fundamental 1º ao 5º - Campo de Fora 187 901


    Moizés Cerqueira | MCP / MCTS SQL SERVER

    segunda-feira, 23 de janeiro de 2017 14:07
  • Bom dia,

    Experimente utilizar a função Len para obter a quantidade de caracteres da coluna. Ex:

    LEFT(Coluna, LEN(Coluna) - 2) + '01'

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    Desta forma também funcionou, obrigado!

    Moizés Cerqueira | MCP / MCTS SQL SERVER

    segunda-feira, 23 de janeiro de 2017 14:11
  • Moizés,

    Se você estiver utilizando o SQL Server a partir da versão 2012 troque o comando CASE pela função IIF.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 24 de janeiro de 2017 13:59
  • Infelizmente é 2008R2, não tenho o recurso do IF.

    Moizés Cerqueira | MCP / MCTS SQL SERVER

    terça-feira, 24 de janeiro de 2017 15:00