답변:
모든 것은 ANSI 표준을 따릅니다.
후행 공백 설명 :
SQL Server는 문자열을 공백과 비교하는 방법에 대한 ANSI / ISO SQL-92 사양 (섹션 8.2,, 일반 규칙 # 3)을 따릅니다. ANSI 표준에서는 비교에 사용 된 문자열에 대해 채우기를 수행하여 길이를 비교하기 전에 길이를 일치시켜야합니다. 패딩은 WHERE 및 HAVING 절 조건 자와 다른 Transact-SQL 문자열 비교의 의미에 직접 영향을줍니다. 예를 들어 Transact-SQL은 문자열 'abc'및 'abc'가 대부분의 비교 작업에서 동일하다고 간주합니다.
이 규칙에 대한 유일한 예외는 LIKE 술어입니다. LIKE 조건 자 식의 오른쪽에 후행 공백이있는 값이 있으면 SQL Server는 비교가 발생하기 전에 두 값을 같은 길이로 채우지 않습니다. LIKE 술어의 목적은 정의상 단순한 문자열 동등성 테스트가 아닌 패턴 검색을 용이하게하는 것이기 때문에 앞에서 언급 한 ANSI SQL-92 스펙의 섹션을 위반하지 않습니다.
위에서 언급 한 모든 사례의 잘 알려진 예는 다음과 같습니다.
DECLARE @a VARCHAR(10)
DECLARE @b varchar(10)
SET @a = '1'
SET @b = '1 ' --with trailing blank
SELECT 1
WHERE
@a = @b
AND @a NOT LIKE @b
AND @b LIKE @a
다음은 후행 공백 및 LIKE
절 에 대한 자세한 내용 입니다.
하지만 당신이 그들을 다른하려면 - 당신이 사용하기로 결정 있습니다 DATALENGTH
대신 기능을 LEN
하기 때문에,
SELECT 1 WHERE LEN('John ') = LEN('John')
대신에 1을 넣을 것입니다
SELECT 1 WHERE DATALENGTH('John ') = DATALENGTH('John')
해결책 은
\n
SQL Server에는 의미가 없습니다. 새 줄로 해석되지 않습니다. 이것은 어쨌든 묻는 질문에 대한 답변이 아닙니다.