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

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

王林
Libérer: 2023-08-26 22:01:06
avant
1614 Les gens l'ont consulté

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)
Copier après la connexion

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)
Copier après la connexion

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)
Copier après la connexion

(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)
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal