SQL WHERE 절 비교의 후행 공백 불일치
SQL Server에서 = 연산자를 사용한 WHERE 절 비교에서는 종종 다음과 같은 불일치가 발생할 수 있습니다. 당황하다. 특히 비교 시 문자열 값의 후행 공백은 무시됩니다. 이 동작은 예상한 것과 다르며 예상치 못한 결과를 초래합니다.
예제 데모
SQL Server 2008에서 다음 예를 고려하십시오.
SELECT '"' + ZoneReference + '"' AS QuotedZoneReference FROM Zone WHERE ZoneReference = 'WF11XU'
이 쿼리는 "ZoneReference"가 기본 키인 "Zone"이라는 테이블에서 데이터를 검색합니다. 열. 쿼리를 실행하면 다음 결과가 반환됩니다.
"WF11XU "
결과 값에 후행 공백이 추가된 것을 확인하세요. 이는 비교 기준에 후행 공백이 포함되어 있지 않음에도 불구하고 발생합니다.
불일치의 원인
SQL ANSI/ISO SQL로 인해 불일치가 발생합니다. 92 사양, 특히 공백을 사용한 문자열 비교가 처리되는 방법을 지정하는 섹션 8.2를 참조하세요. 사양에 따라 SQL Server는 비교를 수행하기 전에 길이가 일치하도록 비교에 사용되는 문자열을 채웁니다. 즉, 길이를 정렬하기 위해 후행 공백이 자동으로 추가되거나 제거됩니다.
결과에 미치는 영향
대부분의 경우 비교 일치 항목에 후행 공백을 포함하면 예상되는 결과가 생성됩니다. 결과. 그러나 후행 공백이 중요한 값을 비교할 경우 부정확하거나 예상치 못한 결과가 발생할 수 있습니다. 예를 들어, 공백이 포함된 정확한 일치 항목을 검색할 때 추가 후행 공백으로 인해 잘못된 일치가 발생할 수 있습니다.
해결 방법
문제를 해결하고 정확한 비교를 보장하려면 다음 중 하나를 수행하세요. TRIM() 함수를 사용하여 비교에 포함된 문자열에서 선행 또는 후행 공백을 제거할 수 있습니다. 이렇게 하면 패딩 없이 정확하게 일치하게 됩니다.
해결 방법 예시
SELECT '"' + TRIM(ZoneReference) + '"' AS QuotedZoneReference FROM Zone WHERE TRIM(ZoneReference) = 'WF11XU'
설명된 대로 TRIM() 함수를 사용하면 공백을 포함하여 문자열이 정확히 일치하도록 보장됩니다. .
위 내용은 SQL Server가 WHERE 절 비교에서 후행 공백을 무시하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!