Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah MySQL mengendalikan nilai di luar julat?

Bagaimanakah MySQL mengendalikan nilai di luar julat?

王林
王林ke hadapan
2023-08-26 22:01:061517semak imbas

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

Pemprosesan nilai MySQL ​​yang melebihi julat dibenarkan jenis data lajur bergantung pada mod SQL, seperti berikut -

(A) Dayakan mod ketat SQL - Apabila mod SQL ketat didayakan , MySQL akan memasukkan nilai julat apabila Mengembalikan ralat. Dalam kes ini, penyisipan beberapa atau semua nilai gagal.

Sebagai contoh, kami mencipta jadual dengan dua lajur yang jenis datanya ialah TINYINT dan TINYINT TANPA TANDA.

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

Kini dengan bantuan arahan berikut, kami telah mendayakan mod SQL yang ketat

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

Sekarang jika kami cuba memasukkan nilai julat ke dalam lajur, MySQL mencerminkan ralat dan kedua-dua sisipan gagal, ini boleh dilakukan oleh Semakan pertanyaan berikut -

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) Lumpuhkan Mod Strict SQL - Apabila mod SQL yang terhad dilumpuhkan, MySQL akan menggunting nilai ke titik akhir yang sesuai bagi jenis data lajur dan mengumpul nilai yang terhasil. MySQL mencerminkan amaran yang merupakan hasil daripada penukaran penugasan lajur yang berlaku akibat pemangkasan.

Sebagai contoh, jika kita memasukkan nilai ke dalam lajur selepas melumpuhkan mod ketat SQL, MySQL akan mencerminkan amaran dan menyimpannya selepas memangkas nilai ke titik akhir yang sesuai. Ia boleh difahami melalui pertanyaan berikut -

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)

Atas ialah kandungan terperinci Bagaimanakah MySQL mengendalikan nilai di luar julat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam