短い列での 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 サイトの他の関連記事を参照してください。