수치 비교의 특이점: MySQL의 놀라운 '문자열'을 0으로 평가
MySQL에서는 '문자열'을 0과 비교할 때 예상치 못한 동작이 나타납니다. 0. 논리적 추론은 잘못된 결과를 제시하지만 놀랍게도 사실로 나타납니다. 이 예외 현상은 비교 중에 MySQL이 문자열을 숫자로 자동 변환하기 때문에 발생합니다.
문자열이 숫자로 시작하면 MySQL은 이를 숫자 값으로 변환합니다. 그러나 숫자 접두사가 없는 문자열은 0으로 처리됩니다. 따라서 'string'은 0으로 캐스팅되어 0과 실제 비교가 이루어집니다.
이 동작은 문자열 열이 0과 비교되는 예에서 분명하게 나타납니다.
select 'string' = 0 as res; -- res = 1 (true)
In 대조적으로, 정수와 소수 모두 다른 숫자와의 비교는 예상대로 false를 반환합니다.
select 'string' = -12 as res; -- res = 0 (false) select 'string' = 3131.7 as res; -- res = 0 (false)
그러나 문자열을 '0'과 비교할 때 문자열인 경우 결과는 false입니다.
select 'string' = '0' as res; -- res = 0 (false)
변환을 강제하려면 ' '와 같은 연산자를 사용할 수 있습니다.
select '0string' + 0 = 'string' AS res; -- res = 1 (true)
이 쿼리를 사용하면 '0string'이 다음으로 변환됩니다. 합계 전의 숫자. 이어서 '문자열'도 숫자로 변환되어 숫자 비교가 이루어집니다.
MySQL 쿼리에서 예기치 않은 결과를 방지하려면 이 캐스팅 동작을 이해하는 것이 중요합니다. 개발자는 문자열을 숫자로 명시적으로 변환하는 연산자를 활용하여 정확한 비교를 보장하고 잠재적인 오해를 방지할 수 있습니다.
위 내용은 MySQL이 숫자 비교에서 \'string\'을 0으로 처리하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!