>  기사  >  데이터 베이스  >  MySQL은 짧은 열의 긴 정수(오버플로 또는 잘림)를 어떻게 처리합니까?

MySQL은 짧은 열의 긴 정수(오버플로 또는 잘림)를 어떻게 처리합니까?

DDD
DDD원래의
2024-10-27 20:08:02651검색

How Does MySQL Handle Long Integers in Shorter Columns: Overflow or Truncation?

짧은 열의 긴 정수 변환: 메커니즘 및 공식

긴 정수를 더 짧은 정수 열에 삽입할 때 MySQL은 일반적으로 값을 자릅니다. 지정된 길이에 맞게. 그러나 경우에 따라 동작이 달라 예상치 못한 변형이 발생할 수 있습니다.

10자리 정수 열 some_number를 생각해 보세요. 최대 정수 범위(2147483647)를 초과하는 값이 이 열에 삽입되면 잘림 대신 MySQL은 값을 해당 데이터 유형에 허용되는 최대 정수인 2147483647로 설정합니다.

The Mechanism Behind 변환

정수 오버플로로 인해 변환이 발생합니다. 긴 정수가 사용 가능한 범위를 초과하면 MySQL은 자동으로 이를 음의 정수로 해석하고 2의 보수 표현을 저장합니다. 이 음수 값을 부호 없는 정수로 다시 변환하면 2147483647이 됩니다.

변환 공식

결과 값은 다음 공식을 사용하여 계산할 수 있습니다.

Resulting Integer = (Original Integer & 0x7FFFFFFF) + 1

주어진 예에서 원래 정수가 715988985123857인 경우:

Resulting Integer = (715988985123857 & 0x7FFFFFFF) + 1
Resulting Integer = (2147483647) + 1
Resulting Integer = 2147483647

따라서 715988985123857에서 2147483647로의 변환은 잘림이 아니라 허용되는 최대 정수로의 오버플로입니다. 지정된 데이터 유형입니다.

위 내용은 MySQL은 짧은 열의 긴 정수(오버플로 또는 잘림)를 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.