139 votos

¿Quitar el último carácter de una cadena en T-SQL?

¿Cómo puedo eliminar el último carácter de una cadena en T-SQL ?

Por ejemplo:

'TEST STRING'

para volver:

'TEST STRIN'

195voto

AdaTheDev Puntos 53358

Por ejemplo

DECLARE @String VARCHAR(100)
SET @String = 'TEST STRING'

-- Chop off the end character
SET @String = 
     CASE @String WHEN null THEN null 
     ELSE (
         CASE LEN(@String) WHEN 0 THEN @String 
            ELSE LEFT(@String, LEN(@String) - 1) 
         END 
     ) END

SELECT @String

106voto

Bill Hoenig Puntos 441

Si por alguna razón la lógica de tu columna es compleja (case when ... then ... else ... end), entonces las soluciones anteriores hacen que tengas que repetir la misma lógica en la función len(). Duplicar la misma lógica se convierte en un lío. Si este es el caso, entonces esta es una solución que vale la pena tener en cuenta. Este ejemplo se deshace de la última coma no deseada. Finalmente encontré un uso para la función REVERSE.

select reverse(stuff(reverse('a,b,c,d,'), 1, 1, ''))

52voto

Adrien Puntos 1639

Prueba esto:

select substring('test string', 1, (len('test string') - 1))

26voto

Max Grachev Puntos 91

Si la cadena está vacía,

DECLARE @String VARCHAR(100)
SET @String = ''
SELECT LEFT(@String, LEN(@String) - 1)

entonces este código causará el mensaje de error 'Parámetro de longitud inválido pasado a la función substring'.

Puedes manejarlo de esta manera:

SELECT LEFT(@String, NULLIF(LEN(@String)-1,-1))

Siempre devolverá el resultado, y NULL en caso de cadena vacía.

7voto

Behrens Puntos 630

Si su color es text y no varchar entonces puedes usar esto:

SELECT SUBSTRING(@String, 1, NULLIF(DATALENGTH(@String)-1,-1))

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X