> 데이터 베이스 > MySQL 튜토리얼 > MySQL이 숫자 비교에서 \'string\'을 0으로 처리하는 이유는 무엇입니까?

MySQL이 숫자 비교에서 \'string\'을 0으로 처리하는 이유는 무엇입니까?

DDD
풀어 주다: 2024-12-10 16:10:11
원래의
217명이 탐색했습니다.

Why Does MySQL Treat 'string' as 0 in Numeric Comparisons?

수치 비교의 특이점: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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