tengo una cadena grande en SQL Server. Quiero truncar esa cadena a 10 o 15 caracteres
Cadena original
this is test string. this is test string. this is test string. this is test string.
Cadena deseada
this is test string. this is ......
tengo una cadena grande en SQL Server. Quiero truncar esa cadena a 10 o 15 caracteres
Cadena original
this is test string. this is test string. this is test string. this is test string.
Cadena deseada
this is test string. this is ......
Respuestas:
Si solo desea devolver algunos caracteres de su cadena larga, puede usar:
select
left(col, 15) + '...' col
from yourtable
Consulte SQL Fiddle con demostración .
Esto devolverá los primeros 15 caracteres de la cadena y luego concatena ...
al final de la misma.
Si desea asegurarse de que las cadenas de menos de 15 no obtengan el ...
, puede usar:
select
case
when len(col)>=15
then left(col, 15) + '...'
else col end col
from yourtable
...
apéndice cuando no se aplica
Puedes usar
LEFT(column, length)
o
SUBSTRING(column, start index, length)
Creo que las respuestas aquí son geniales, pero me gustaría agregar un escenario.
Varias veces he querido quitar una cierta cantidad de caracteres del frente de una cadena, sin preocuparme por su longitud. Hay varias formas de hacer esto con RIGHT () y SUBSTRING (), pero todas necesitan saber la longitud de la cadena que a veces puede ralentizar las cosas.
En su lugar, he usado la función STUFF ():
SET @Result = STUFF(@Result, 1, @LengthToRemove, '')
Esto reemplaza la longitud de la cadena innecesaria con una cadena vacía.
También puede utilizar la operación Cast ():
Declare @name varchar(100);
set @name='....';
Select Cast(@name as varchar(10)) as new_name
También puede usar lo siguiente, el iif evita la declaración de caso y solo agrega puntos suspensivos cuando sea necesario (solo es bueno en SQL Server 2012 y versiones posteriores) y la declaración de caso es más compatible con ANSI (pero más detallada)
SELECT
col, LEN(col),
col2, LEN(col2),
col3, LEN(col3) FROM (
SELECT
col,
LEFT(x.col, 15) + (IIF(len(x.col) > 15, '...', '')) AS col2,
LEFT(x.col, 15) + (CASE WHEN len(x.col) > 15 THEN '...' ELSE '' END) AS col3
from (
select 'this is a long string. One that is longer than 15 characters' as col
UNION
SELECT 'short string' AS col
UNION
SELECT 'string==15 char' AS col
UNION
SELECT NULL AS col
UNION
SELECT '' AS col
) x
) y