首頁  >  文章  >  資料庫  >  MySQL 如何處理超出範圍的數值?

MySQL 如何處理超出範圍的數值?

王林
王林轉載
2023-08-26 22:01:061517瀏覽

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

對超出列資料型別允許範圍的MySQL 數值的處理取決於SQL 模式,如下-

(A) 啟用SQL 嚴格模式 - 啟用嚴格SQL 模式時,MySQL 在輸入範圍值時傳回錯誤。在這種情況下,部分或全部值的插入會失敗。

例如,我們建立了一個包含兩列的表,其資料類型為 TINYINT 和 UNSIGNED TINYINT。

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

現在藉助以下命令,我們啟用了嚴格的SQL 模式

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

現在,如果我們嘗試將超出範圍的值插入到列中,MySQL 會反映錯誤,並且兩次插入都失敗,可以透過下面的查詢進行檢查-

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) 停用SQL 嚴格模式- 當限制限制性SQL 模式時,MySQL 將會將該數值剪裁到該列資料類型的適當端點,並且累積結果值。 MySQL 會反映警告,這些警告是由於剪裁而發生的列賦值轉換的結果。

例如,如果我們在停用 SQL 嚴格模式後將值插入列中,MySQL 將反映警告並將值修剪到適當的終點後儲存它們。可以透過下面的查詢來理解 -

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)

以上是MySQL 如何處理超出範圍的數值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除