SQL Server에서 문자열을 자르는 방법?


132

SQL Server 2017에서는이 구문을 사용할 수 있지만 이전 버전에서는 사용할 수 없습니다.

SELECT Name = TRIM(Name) FROM dbo.Customer;

답변:


239
SELECT LTRIM(RTRIM(Names)) AS Names FROM Customer

3
가장 쉬운 방법입니다. 반환되는 열에 별명을 지정하십시오.
Miles

1
@Miles-완전성을 위해 별칭을 추가했습니다.
벤 호프 스타 인

2
나는 이것이 값의 트리밍을 사용하는 올바른 방법이라는 것을 이해합니다. 그러나 TRIM 만 대신 사용할 수있을 때 LTRIM과 RTRIM을 모두 사용해야하는 이유를 설명 할 수 있습니까?
코드 버스터

6
@CodeBuster : SQL Server에는 2014 버전에서도 TRIM 기능이 정의되어 있지 않습니다.
alextansc

7
SQL Server는 이제 2017 버전에서 TRIM을 갖습니다. docs.microsoft.com/ko-kr/sql/t-sql/functions/trim-transact-sql
goodeye

64

오른쪽에서 자르려면 다음을 사용하십시오.

SELECT RTRIM(Names) FROM Customer

왼쪽을 자르려면 다음을 사용하십시오.

SELECT LTRIM(Names) FROM Customer

양쪽을 다듬 으려면 다음을 사용하십시오.

SELECT LTRIM(RTRIM(Names)) FROM Customer

5
또한 TRIM없이 LTRIM 및 RTRIM 기능을 포함시킨 Microsoft의 가능한 이유는 무엇입니까? 독특합니다.
벤 호프 슈타인

중복되기 때문입니다. LTRIM (RTRIM (var))을 사용하여 동일한 작업을 수행 할 수 있습니다.
Kibbee

52
예,하지만 두 가지 함수 호출입니다. TSQL에 CHARINDEX와 SUBSTRING이 있기 때문에 모두 중복이라고 말할 수 있지만, 그것을 보는 것은 바보 같은 방법입니다.
Ben Hoffstein

9
전혀 중복되지 않습니다. TRIM이라는 단일 기능을 제공하지 않으면 사용자에게 구문 부담이 발생합니다.
joelc

3
아마도 모든 기능이 -100 포인트에서 시작하기 때문에 감독 또는 도끼가 된 기능 중 하나 일 수 있습니다 (IMHO 우선 순위가 지정된 기능 세트 대신 일관성이없는 기능 세트로 이어짐).
siride

7

나는 이것이 일회성 데이터 스크러빙 연습이라고 가정한다. 완료되면 향후 데이터 불량을 방지하기 위해 데이터베이스 제약 조건을 추가해야합니다. 예 :

ALTER TABLE Customer ADD
   CONSTRAINT customer_names__whitespace
      CHECK (
             Names NOT LIKE ' %'
             AND Names NOT LIKE '% '
             AND Names NOT LIKE '%  %'
            );

또한 문제를 일으킬 수있는 다른 문자 (탭, 캐리지 리턴, 줄 바꿈 등)는 허용하지 마십시오.

또한으로 그 이름을 나눌 수있는 좋은 시간이 될 수 있습니다 family_name, first_name등 :


4
SELECT LTRIM(RTRIM(Replace(Replace(Replace(name,'   ',' '),CHAR(13), ' '),char(10), ' ')))
from author

0

ssis 표현식을 사용하는 SQL Server 2008 r2에는 트림 기능이 있습니다.

SSIS (SQL Server Integration Services)는 광범위한 데이터 마이그레이션 작업을 수행하는 데 사용할 수있는 Microsoft SQL Server 데이터베이스 소프트웨어의 구성 요소입니다.

이 링크에서 전체 설명을 찾을 수 있습니다

http://msdn.microsoft.com/en-us/library/ms139947.aspx

그러나이 함수 자체에는 그 페이지에서 msdn으로 언급되는 제한이 있습니다. 하지만 이것은 SQL Server 2008 r2에 있습니다.

TRIM("   New York   ") .The return result is "New York".

3
데이터베이스와 함께 번들로 제공되는 제품에 있다는 점을 제외하고는 MS SQL과는 아무런 관련이 없습니다.
siride

-1

"REPLACE"의 확장 버전 :

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(REPLACE("Put in your Field name", ' ',' '))),'''',''), CHAR(9), ''), CHAR(10), ''), CHAR(13), ''), CHAR(160), '') [CorrValue]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.