반응형
SQL Server를 사용하여 문자열을 자르는 방법
SQL Server에 큰 문자열이 있습니다. 해당 문자열을 10 또는 15 자로 자르고 싶습니다.
원래 문자열
this is test string. this is test string. this is test string. this is test string.
원하는 문자열
this is test string. this is ......
긴 문자열의 몇 문자 만 반환하려면 다음을 사용할 수 있습니다.
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
CASE
WHEN col IS NULL
THEN ''
ELSE SUBSTRING(col,1,15)+ '...'
END AS Col
참고 URL : https://stackoverflow.com/questions/15142356/how-to-truncate-string-using-sql-server
반응형
'developer tip' 카테고리의 다른 글
알림을 클릭 한 후 애플리케이션 열기 (0) | 2020.08.26 |
---|---|
sed로 후행 공백을 제거하는 방법은 무엇입니까? (0) | 2020.08.26 |
largeHeap을 true로 설정하면 어떤 이점이 있습니까? (0) | 2020.08.25 |
쉘 스크립트의 변수에 명령을 저장하는 방법은 무엇입니까? (0) | 2020.08.25 |
Heroku 애플리케이션 DNS를 Godaddy 도메인에 구성하는 방법은 무엇입니까? (0) | 2020.08.25 |