MySQL は数値式の評価中にオーバーフローをどのように処理しますか?

WBOY
リリース: 2023-08-24 10:05:02
転載
1347 人が閲覧しました

MySQL 如何处理数值表达式评估期间的溢出?

数値式の評価中にオーバーフローが発生すると、MySQL がエラーを生成することはわかっています。たとえば、最大の符号付き BIGNT は 9223372036854775807 であるため、次の式はエラーを生成します-

mysql> Select 9223372036854775807 + 1;
ERROR 1690 (22003): BIGINT value is out of range in '(9223372036854775807+1)'
ログイン後にコピー

MySQL は、次の方法でこのような種類のオーバーフローを処理できます。

BY CONVERTING VALUE TO UNSIGNED

MySQL は、値を符号なしに変換することで、このような種類の操作を可能にします。次のように-

mysql> Select CAST(9223372036854775807 AS UNSIGNED) +1;
+------------------------------------------+
| CAST(9223372036854775807 AS UNSIGNED) +1 |
+------------------------------------------+
|                      9223372036854775808 |
+------------------------------------------+
1 row in set (0.07 sec)
ログイン後にコピー

正確な値の算術を使用することで

MySQLは正確な値の算術を使用して上記の式を処理できます。オペランドの範囲によってはオーバーフローが発生するためです。たとえば、上記の計算は、次のように DECIMAL 値を使用して実行できます。 -

mysql> Select 9223372036854775807.0 + 1;
+---------------------------+
| 9223372036854775807.0 + 1 |
+---------------------------+
|     9223372036854775808.0 |
+---------------------------+
1 row in set (0.01 sec)
ログイン後にコピー

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

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート