none
Alterar ultima letra de uma string RRS feed

  • Pergunta

  • Bom dia Amigos,

    Estou precisando alterar a ultima letra de uma string pela posterior, ou seja, se eu tenho uma string '1234A' ela tem que virar '1234B'.

    Bom eu fiz um script que funciona, mas gostaria de saber se existe uma forma mais fácil.
    Segue abaixo meu script:

    DECLARE @COUNT INT, @LETRA VARCHAR(2)
    	SET @COUNT = 0
    	SET @LETRA = 'A'
    
    	WHILE @COUNT < 1 BEGIN
    		IF @LETRA = 'A' BEGIN
    			SET @LETRA = 'B'
    			SET @COUNT = 1
    			BREAK
    		END
    
    		IF @LETRA = 'B' BEGIN
    			SET @LETRA = 'C'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'C' BEGIN
    			SET @LETRA = 'D'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'D' BEGIN
    			SET @LETRA = 'E'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'E' BEGIN
    			SET @LETRA = 'F'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'F' BEGIN
    			SET @LETRA = 'G'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'G' BEGIN
    			SET @LETRA = 'H'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'H' BEGIN
    			SET @LETRA = 'I'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'I' BEGIN
    			SET @LETRA = 'J'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'J' BEGIN
    			SET @LETRA = 'K'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'K' BEGIN
    			SET @LETRA = 'L'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'L' BEGIN
    			SET @LETRA = 'M'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'M' BEGIN
    			SET @LETRA = 'N'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'N' BEGIN
    			SET @LETRA = 'O'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'O' BEGIN
    			SET @LETRA = 'P'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'P' BEGIN
    			SET @LETRA = 'Q'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'Q' BEGIN
    			SET @LETRA = 'R'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'R' BEGIN
    			SET @LETRA = 'S'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'S' BEGIN
    			SET @LETRA = 'T'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'T' BEGIN
    			SET @LETRA = 'U'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'U' BEGIN
    			SET @LETRA = 'V'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'V' BEGIN
    			SET @LETRA = 'W'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'W' BEGIN
    			SET @LETRA = 'X'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'X' BEGIN
    			SET @LETRA = 'Y'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'Y' BEGIN
    			SET @LETRA = 'Z'
    			SET @COUNT = 1
    			BREAK
    		END
    		IF @LETRA = 'Z' BEGIN
    			SET @LETRA = 'AA'
    			SET @COUNT = 1
    			BREAK
    		END
    	END

    Obrigado pela ajuda.

    quinta-feira, 5 de abril de 2012 14:48

Respostas

  • Gabriel, veja se esse exemplo te ajuda.

    -- declarando e populando uma tabela temporária
    declare @t as table ( Col varchar(10)) 
    insert into @t values ('123A')
    insert into @t values ('123B')
    insert into @t values ('123H')
    insert into @t values ('123Y')
    insert into @t values ('123Z')
    
    -- select 
    SELECT 
        COL,
        LEFT(COL,LEN(COL)-1)
        +
        CASE 
            WHEN ASCII(RIGHT(Col,1))=90
            THEN 'AA'
            ELSE CHAR(ASCII(RIGHT(Col,1))+1)
        END AS NovaColuna    
    FROM 
        @t
    


    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino

    quinta-feira, 5 de abril de 2012 16:31