ホームページ >データベース >mysql チュートリアル >MySQL は短い列の長い整数をどのように処理しますか: オーバーフローまたは切り捨て?

MySQL は短い列の長い整数をどのように処理しますか: オーバーフローまたは切り捨て?

DDD
DDDオリジナル
2024-10-27 20:08:02730ブラウズ

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

短い列での Long 整数の変換: メカニズムと式

長い整数を短い整数列に挿入する場合、通常、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 への変換は切り捨てではなく、許容される最大整数へのオーバーフローになります。指定されたデータ型。

以上がMySQL は短い列の長い整数をどのように処理しますか: オーバーフローまたは切り捨て?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。