MySQL 整数列に許可されている最大値より大きい数値を挿入するとどうなりますか?

Mary-Kate Olsen
リリース: 2024-10-31 09:26:01
オリジナル
282 人が閲覧しました

What Happens When You Insert a Number Larger than the Maximum Value Allowed in a MySQL Integer Column?

MySQL の整数オーバーフロー: 長整数の変換を理解する

MySQL では、長さが不十分なカラムに過度に大きな整数を挿入すると、予想外の変身。切り捨てとは異なり、この現象には、列のデータ型で表現できる最大値への整数の変換が含まれます。

説明のために、整数を保持できる長さ 10 の some_number という名前の列を考えてみましょう。最大 2147483647 (32 ビット符号付き整数の最大値)。この列に 715988985123857 のような数値を挿入すると、データベース内の結果は 2147483647 として表示されます。

この変換が発生するのは、MySQL が整数オーバーフローに対して次の動作に準拠しているためです。

  • If挿入された値がデータ型の最大値を超えている場合、整数はラップアラウンドしてリセットされます。

この場合、715988985123857 は 2147483647 よりも大幅に大きいため、最大値までラップアラウンドし、観測値は 2147483647 になります。

式:

式オーバーフロー後の結果の数値を決定するには、次のように表現できます。

Result = (Input Integer - Minimum Integer for DataType) % (Maximum Integer for DataType - Minimum Integer for DataType) + Minimum Integer for DataType
ログイン後にコピー

指定された例の場合、結果は次のように計算できます。

Result = (715988985123857 - -2147483648) % (2147483647 - -2147483648) + -2147483648
= 2147483647
ログイン後にコピー

整数オーバーフローの仕組みを理解することで、予期しない値がデータベースに保存されるのを避けることができます。この知識は、指定されたデータ型の制限を超える可能性のある整数を扱う場合に特に重要です。

以上がMySQL 整数列に許可されている最大値より大きい数値を挿入するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!