MySQL이 문자열 비교를 0과 True로 처리하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-26 07:57:09
원래의
676명이 탐색했습니다.

Why Does MySQL Treat String Comparisons to Zero as True?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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