NO_UNSIGNED_SUBTRACT SQL 模式用於處理溢位時有什麼用?
如果啟用了 SQL 嚴格模式,在其中一個為 UNSIGNED 型別的情況下,整數值之間的減法運算在預設情況下會產生無符號結果。但是,如果結果為負數,MySQL 將會產生一個錯誤。可以觀察以下示例 -
mysql> SET sql_mode = ''; Query OK, 0 rows affected (0.00 sec) mysql> Select CAST(0 AS UNSIGNED) -1; ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in '(cast(0 as unsigned) - 1)'
上述查詢後的錯誤顯示,它是數值運算表示式後的溢位。
現在,可以透過啟用 NO_UNSIGNED_SUBTRACTION SQL 模式來處理它。啟用此模式後,結果將為 -1,而不是錯誤。
mysql> Set sql_mode = 'NO_UNSIGNED_SUBTRACTION'; Query OK, 0 rows affected (0.00 sec) mysql> Select CAST(0 AS UNSIGNED) -1; +------------------------+ | CAST(0 AS UNSIGNED) -1 | +------------------------+ | -1 | +------------------------+ 1 row in set (0.00 sec)
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP