Maison >base de données >tutoriel mysql >Comment MySQL gère-t-il le débordement lors de l'évaluation des expressions numériques ?
Comme nous savons que MySQL produira une erreur si un débordement se produit lors de l'évaluation des expressions numériques. Par exemple, le plus grand BIGNT signé est 9223372036854775807, donc l'expression suivante produira une erreur −
mysql> Select 9223372036854775807 + 1; ERROR 1690 (22003): BIGINT value is out of range in '(9223372036854775807+1)'
MySQL peut gérer ce type de données. des débordements de la manière suivante :
MySQL permet ce type d'opérations en convertissant les valeurs en non signé comme suit −
mysql> Select CAST(9223372036854775807 AS UNSIGNED) +1; +------------------------------------------+ | CAST(9223372036854775807 AS UNSIGNED) +1 | +------------------------------------------+ | 9223372036854775808 | +------------------------------------------+ 1 row in set (0.07 sec)
MySQL peut utiliser l'arithmétique des valeurs exactes pour traiter les expressions ci-dessus Mode. En effet, un débordement se produit en fonction de la plage des opérandes. Par exemple, le calcul ci-dessus peut être effectué en utilisant la valeur DECIMAL comme indiqué ci-dessous −
mysql> Select 9223372036854775807.0 + 1; +---------------------------+ | 9223372036854775807.0 + 1 | +---------------------------+ | 9223372036854775808.0 | +---------------------------+ 1 row in set (0.01 sec)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!