짧은 열의 긴 정수 변환: 메커니즘 및 공식
긴 정수를 더 짧은 정수 열에 삽입할 때 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!