Heim  >  Artikel  >  Datenbank  >  Wie geht MySQL mit Werten um, die außerhalb des zulässigen Bereichs liegen?

Wie geht MySQL mit Werten um, die außerhalb des zulässigen Bereichs liegen?

王林
王林nach vorne
2023-08-26 22:01:061559Durchsuche

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

Die Verarbeitung von MySQL-Werten, die den zulässigen Bereich des Spaltendatentyps überschreiten, hängt wie folgt vom SQL-Modus ab: -

(A) Aktivieren Sie den strikten SQL-Modus - Wenn der strikte SQL-Modus aktiviert ist , MySQL gibt den Bereichswert ein, wenn ein Fehler zurückgegeben wird. In diesem Fall schlägt das Einfügen einiger oder aller Werte fehl.

Zum Beispiel haben wir eine Tabelle mit zwei Spalten erstellt, deren Datentypen TINYINT und UNSIGNED TINYINT sind.

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

Jetzt haben wir mit Hilfe des folgenden Befehls den strikten SQL-Modus aktiviert

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

Wenn wir nun versuchen, einen außerhalb des Bereichs liegenden Wert in die Spalte einzufügen, meldet MySQL einen Fehler und beide Einfügungen schlagen fehl. Dies kann durch das erledigt werden Folgende Abfrageprüfung -

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) Deaktivieren Sie den strikten SQL-Modus - Wenn der restriktive SQL-Modus deaktiviert ist, schneidet MySQL den Wert auf den entsprechenden Endpunkt des Datentyps der Spalte und akkumuliert den resultierenden Wert. MySQL spiegelt Warnungen wider, die das Ergebnis von Spaltenzuweisungskonvertierungen sind, die aufgrund der Bereinigung auftreten.

Wenn wir beispielsweise Werte in eine Spalte einfügen, nachdem wir den strikten SQL-Modus deaktiviert haben, spiegelt MySQL die Warnung wider und speichert sie, nachdem die Werte auf einen geeigneten Endpunkt gekürzt wurden. Es kann durch die folgende Abfrage verstanden werden:

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)

Das obige ist der detaillierte Inhalt vonWie geht MySQL mit Werten um, die außerhalb des zulässigen Bereichs liegen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen