MySQL의 문자열과 0 비교: 진실 밝히기
MySQL에서 문자열 열을 0과 비교할 때 놀라운 동작이 드러납니다. 결과는 true로 평가됩니다. 이는 다음과 같은 시나리오에서 발생합니다.
select 'string' = 0 as res; -- res = 1 (true)
그러나 동일한 문자열을 양수 및 음수 모두의 다른 숫자와 비교하면 예상된 잘못된 결과가 나타납니다. 이러한 불일치는 다음과 같은 질문을 제기합니다. 왜 이런 예외가 발생하는가?
문자열 마법의 배후
MySQL은 비교 중에 조용히 문자열을 숫자로 변환합니다. 숫자로 시작하지 않는 문자열의 경우 변환 결과는 0이 됩니다.
select 'string' = 0 as res; -- res = 1 (true)
변환 제어
MySQL은 종종 자동으로 변환을 처리하지만 ' '와 같은 연산자를 사용하도록 강제하는 것이 유용할 수 있습니다. 다음을 고려하십시오.
select '0string' + 0 = 'string' AS res; -- res = 1 (true)
이 쿼리에서는 문자열 '0string'이 0에 추가되어 숫자로 변환됩니다. 이어서 변환된 문자열 'string'이 0과 비교되어 다시 변환이 트리거됩니다. 결과 비교는 숫자 값 사이에서 이루어지며 true가 됩니다.
MySQL의 자동 문자열 변환은 비교 이상의 기능을 제공합니다. 예를 들면 다음과 같습니다.
select '1abc' + '2ef' AS total; -- total = 1+2 = 3
문자열은 더하기 전에 숫자로 변환되어 올바른 숫자 연산이 이루어집니다.
이 문자열 변환 메커니즘을 이해하면 MySQL 문자열 비교에서 겉보기에 역설적인 동작을 이해하는 데 도움이 됩니다. 이를 통해 개발자는 쿼리 작성 및 데이터 조작에 이 기능을 효과적으로 활용할 수 있습니다.
위 내용은 MySQL이 문자열 비교를 0과 True로 처리하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!