ホームページ  >  記事  >  データベース  >  MySQL は数値式の評価中にオーバーフローをどのように処理しますか?

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

WBOY
WBOY転載
2023-08-24 10:05:021345ブラウズ

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 までご連絡ください。