답변:
긴 문자열의 몇 자만 반환하려면 다음을 사용할 수 있습니다.
select
left(col, 15) + '...' col
from yourtable
데모가있는 SQL Fiddle을 참조하십시오 .
이렇게하면 문자열의 처음 15자를 반환 한 다음 ...
을 끝에 연결 합니다.
15보다 작은 문자열을 얻지 않으려면 ...
다음을 사용할 수 있습니다.
select
case
when len(col)>=15
then left(col, 15) + '...'
else col end col
from yourtable
...
이 적용되지 않는 경우 추가
당신이 사용할 수있는
LEFT(column, length)
또는
SUBSTRING(column, start index, length)
여기에 대한 답변은 훌륭하다고 생각하지만 시나리오를 추가하고 싶습니다.
여러 번 문자열 길이에 대한 걱정없이 문자열 앞쪽에서 일정량의 문자를 제거하고 싶었습니다. RIGHT () 및 SUBSTRING ()을 사용하여이 작업을 수행하는 방법에는 여러 가지가 있지만 모두 문자열의 길이를 알 필요가있어 때때로 속도가 느려질 수 있습니다.
대신 STUFF () 함수를 사용했습니다.
SET @Result = STUFF(@Result, 1, @LengthToRemove, '')
이것은 불필요한 문자열의 길이를 빈 문자열로 대체합니다.
Cast () 연산을 사용할 수도 있습니다.
Declare @name varchar(100);
set @name='....';
Select Cast(@name as varchar(10)) as new_name
아래를 사용할 수도 있습니다. iif는 case 문을 피하고 필요할 때만 줄임표를 추가합니다 (SQL Server 2012 이상에서만 좋음). case 문은 ANSI를 더 준수합니다 (하지만 더 자세한 정보).
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