MySQL 문자열 비교 이상: 미스터리 풀기
MySQL 문자열 열을 값 0과 비교할 때 예기치 않은 결과가 발생합니다. 진실! 이 수수께끼 같은 동작은 MySQL에서 문자열을 숫자로 자동 변환하는 기능 때문일 수 있습니다.
기본적으로 MySQL은 숫자 비교를 수행할 때 문자열을 숫자로 변환하려고 시도합니다. 문자열이 숫자로 시작하지 않으면 0의 값을 갖는 것으로 간주됩니다. 우리의 경우 'string'은 0으로 변환되어 'string' = 0 비교 결과가 됩니다.
그러나 , 이 캐스팅 동작은 수치 비교에만 적용됩니다. 문자열을 다른 문자열과 비교할 때 자동 변환은 없습니다. 따라서 'string'을 문자열 '0'과 비교하면 FALSE가 올바르게 반환됩니다.
이 동작을 더 자세히 설명하려면 다음 예를 고려하세요.
이러한 이상 현상을 방지하고 일관된 동작을 보장하려면 수치 비교를 수행하기 전에 문자열을 원하는 데이터 유형으로 명시적으로 캐스팅하는 것이 좋습니다. 예를 들어, 다음 쿼리는 '0string'을 숫자로 처리하도록 합니다.
이 쿼리는 TRUE를 반환합니다. 왜냐하면 '0string'은 숫자 0에 더해지면 숫자 0으로 변환되기 때문입니다. 마찬가지로 '1abc' '2ef'는 숫자로 변환된 문자열의 합계를 반환합니다(3 이 경우).
개발자는 MySQL의 자동 캐스팅 메커니즘을 이해함으로써 예상치 못한 결과를 방지하고 정확한 문자열 비교를 보장할 수 있습니다.
위 내용은 문자열을 0과 비교할 때 MySQL이 TRUE를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!