對超出列資料型別允許範圍的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中文網其他相關文章!