Maison  >  Article  >  base de données  >  Comment MySQL gère-t-il les valeurs hors plage ?

Comment MySQL gère-t-il les valeurs hors plage ?

王林
王林avant
2023-08-26 22:01:061515parcourir

MySQL 如何处理超出范围的数值?

Le traitement des valeurs MySQL qui dépassent la plage autorisée du type de données de colonne dépend du mode SQL, comme suit -

(A) Activer le mode SQL strict - Lorsque le mode SQL strict est activé , MySQL entrera la valeur de la plage lors du renvoi d'une erreur. Dans ce cas, l'insertion de tout ou partie des valeurs échoue.

Par exemple, nous avons créé une table avec deux colonnes dont les types de données sont TINYINT et UNSIGNED TINYINT.

mysql> Create table counting(Range1 Tinyint, Range2 Tinyint Unsigned);
Query OK, 0 rows affected (0.14 sec)

Maintenant, à l'aide de la commande suivante, nous avons activé le mode SQL strict

mysql> Set SQL_MODE ='traditional';
Query OK, 0 rows affected (0.00 sec)

Maintenant, si nous essayons d'insérer une valeur hors plage dans la colonne, MySQL reflète une erreur et les deux insertions échouent, cela peut être fait par le requête suivante Check -

mysql> Insert into Counting(Range1, Range2) Values(256,256);
ERROR 1264 (22003): Out of range value for column 'Range1' at row 1

mysql> Select * from counting;
Empty set (0.00 sec)

(B) Désactiver le mode SQL strict - Lorsque le mode SQL restrictif est désactivé, MySQL coupe la valeur au point de terminaison approprié du type de données de la colonne et accumule la valeur résultante. MySQL reflète les avertissements résultant des conversions d'affectation de colonnes qui se produisent en raison de l'élagage.

Par exemple, si nous insérons des valeurs dans une colonne après avoir désactivé le mode SQL strict, MySQL reflétera l'avertissement et les stockera après avoir coupé les valeurs à un point de terminaison approprié. Cela peut être compris à travers la requête suivante -

mysql> Set SQL_MODE = '';
Query OK, 0 rows affected (0.00 sec)

mysql> Insert Into Counting(Range1,Range2) values (256,256);
Query OK, 1 row affected, 2 warnings (0.02 sec)

mysql> Show Warnings;
+---------+------+-------------------------------------------------+
| Level   | Code | Message                                         |
+---------+------+-------------------------------------------------+
| Warning | 1264 | Out of range value for column 'Range1' at row 1 |
| Warning | 1264 | Out of range value for column 'Range2' at row 1 |
+---------+------+-------------------------------------------------+
2 rows in set (0.00 sec)

mysql> Select * from Counting;
+--------+--------+
| Range1 | Range2 |
+--------+--------+
| 127    | 255    |
+--------+--------+
1 row in set (0.00 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer