"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > MySQL은 짧은 열의 긴 정수(오버플로 또는 잘림)를 어떻게 처리합니까?

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

2024-11-08에 게시됨
검색:917

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

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

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

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

뒤에 있는 메커니즘 변환

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

변환 공식

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

Resulting Integer = (Original Integer & 0x7FFFFFFF)   1

주어진 예에서 원래 정수 715988985123857:

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

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

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3