후행 공백에 갇히다: SQL 비교 난제
Zone 테이블의 값을 일치시키려고 시도하는 다음 SQL 쿼리를 생각해 보세요. :
select '"' + ZoneReference + '"' as QuotedZoneReference from Zone where ZoneReference = 'WF11XU'
놀랍게도 결과는 예상치 못한 후행을 보여줍니다. space:
"WF11XU "
후행 공백에도 불구하고 SQL Server는 일치 항목을 반환하므로 우리는 당황하게 됩니다.
직관에 반하는 것처럼 보이는 이 동작은 SQL Server의 문자열 비교를 안내하는 표준을 살펴보면 설명할 수 있습니다. . ANSI/ISO SQL-92 사양에 따라 SQL Server는 비교에 사용되는 문자열을 채워서 검사를 수행하기 전에 길이가 동일한지 확인합니다. 이 규칙은 대부분의 비교 작업으로 확장되어 'abc' 및 'abc'와 같은 문자열을 문자열 비교에 동일하게 만듭니다.
그러나 이 규칙의 예외는 LIKE 조건자입니다. LIKE 연산자가 포함된 경우에만 SQL Server는 패딩을 금지합니다. 이러한 구별은 직접적인 문자열 동일성 테스트가 아닌 패턴 일치라는 LIKE 조건자의 기본 목적에서 비롯됩니다.
이 경우에는 단순 동일성 연산자(=)를 사용하므로 SQL Server에서 후행 공백을 고려합니다. , 성공적인 경기로 이어집니다. 우리의 의도가 정확히 일치하는 항목을 검색하는 것이라면 후행 공백을 무시하고 더 정확한 결과를 제공하는 LIKE 조건자를 활용할 수 있습니다.
위 내용은 같음 연산자를 사용함에도 불구하고 내 SQL 쿼리가 후행 공백과 일치하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!