본문 바로가기
프로그래밍/TSQL

[MSSQL] 뒷공백 뒤공백 문자 비교 시 Tip

by 정리 습관(★arranging★) 2020. 11. 11.
728x90
DECLARE @STR VARCHAR(100)
SET @STR = 'ABC '
SELECT CASE WHEN @STR = RTRIM(LTRIM(@STR)) THEN 'SAME' ELSE 'DIFF' END​

결과는 SAME 입니다.

WHERE RTRIM(LTRIM([문자열컬럼])) <> [문자열컬럼]
-> 원하는 결과가 나오지 않음

WHERE RTRIM(LTRIM([문자열컬럼])) = [문자열컬럼]
AND DATALENGTH(RTRIM(LTRIM([문자열컬럼]))) <> DATALENGTH([문자열컬럼])
-> 원하는 결과가 나옴

MSSQL 앞공백 뒷공백 앞뒤공백 문자 비교 시 Tip

 문자열 컬럼에 대해 RTRIM, LTRIM 적용 후 문자열 비교 시 유의 할 점을 공유 드립니다.

'ABC ' = 'ABC'

TRY

WHERE RTRIM(LTRIM(문자열컬럼)) <> 문자열컬럼

-> 원하는 결과가 나오지 않음

WHERE RTRIM(LTRIM([문자열컬럼])) =[문자열컬럼]

AND DATALENGTH(RTRIM(LTRIM(문자열컬럼))) <> DATALENGTH(문자열컬럼)

-> 원하는 결과가 나옴

 

MSSQL TSQL ANSI/ISO 표준에 따라 뒤 공백이 있는 문자와 없는 문자를 비교 시 공백을 제거한 비교 연산을 수행합니다.

뒤 공백이 있는 경우 단순 문자열 비교로는 원하는 결과가 나오지 않으니 유의 하셔야 합니다.

 

"Transact-sql은 대부분의 비교 연산에 대해 'abc' 'abc ' 문자열을 동일 하 게 간주 합니다."

 https://support.microsoft.com/ko-kr/help/316626/inf-how-sql-server-compares-strings-with-trailing-spaces

댓글