> 데이터 베이스 > MySQL 튜토리얼 > 같음 연산자를 사용함에도 불구하고 내 SQL 쿼리가 후행 공백과 일치하는 이유는 무엇입니까?

같음 연산자를 사용함에도 불구하고 내 SQL 쿼리가 후행 공백과 일치하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-04 14:14:38
원래의
131명이 탐색했습니다.

Why Does My SQL Query Match with a Trailing Space Despite Using the Equality Operator?

후행 공백에 갇히다: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿