¿Cómo elimino el último carácter de una cadena T-SQL
?
Por ejemplo:
'TEST STRING'
regresar:
'TEST STRIN'
sql
sql-server
tsql
Daveed
fuente
fuente
Si por alguna razón la lógica de su columna es compleja (caso cuando ... entonces ... más ... finaliza), entonces las soluciones anteriores hacen que tenga que repetir la misma lógica en la función len (). Duplicar la misma lógica se convierte en un desastre. Si este es el caso, entonces esta es una solución digna de mención. Este ejemplo elimina la última coma no deseada. Finalmente encontré un uso para la función REVERSE.
fuente
NULL
si se pasa una cadena que es más corta que el rango de eliminación especificado paraSTUFF
. Envuélvala en unISNULL
para obtener un valor de salida diferente para el caso de cadena vacía.select reverse(stuff(reverse('a,b,c,d,'), 2, 1, ''))
Prueba esto:
fuente
select substring('test string', 0, len('test string'))
?SUBSTRING ( expression ,start , length )
. Ahora, ambas consultas devuelven lo mismo porque la numeración se basa en 1, lo que significa que el primer carácter de la expresión es 1. Si start es menor que 1, la expresión devuelta comenzará en el primer carácter especificado en la expresión. FuenteSi tu cadena está vacía,
entonces este código causará el mensaje de error 'Parámetro de longitud no válido pasado a la función de subcadena'.
Puedes manejarlo de esta manera:
Siempre devolverá resultado y NULL en caso de cadena vacía.
fuente
fuente
Esto funcionará incluso cuando el texto fuente / var sea nulo o vacío:
fuente
Si su coloumn es
text
y novarchar
, entonces puede usar esto:fuente
Si desea hacer esto en dos pasos, en lugar de los tres de REVERSE-STUFF-REVERSE, puede hacer que su separador de lista sea uno o dos espacios. Luego use RTRIM para recortar los espacios finales, y REPLACE para reemplazar los espacios dobles con ','
Sin embargo, esta no es una buena idea si su cadena original puede contener espacios internos.
No estoy seguro sobre el rendimiento. Cada REVERSE crea una nueva copia de la cadena, pero STUFF es un tercio más rápido que REPLACE.
también vea esto
fuente
fuente
Puedo sugerir esto -hack-;).
Demostración de violín de SQL Server
fuente
puedes crear funciones
fuente
Prueba esto
fuente
Consigue el último personaje
fuente
Mi respuesta es similar a la respuesta aceptada, pero también verifica la cadena vacía y nula.
fuente
Esto es bastante tarde, pero curiosamente nunca se mencionó todavía.
es decir:
fuente
Me encanta la respuesta de @ bill-hoenig; sin embargo, estaba usando una subconsulta y quedé atrapado porque la función REVERSE necesitaba dos conjuntos de paréntesis. ¡Me tomó un tiempo darme cuenta de eso!
fuente
Para actualizar el registro recortando los últimos N caracteres de una columna en particular:
fuente
Intentalo :
fuente
salida:
fuente
Prueba esto,
Y la salida será como, THAMIZHMANI
fuente
fuente