Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL CAST는 어떻게 오버플로를 처리할 수 있습니까?


MySQL CAST는 수치 표현식 평가 중에 발생하는 오버플로를 처리할 수 있습니다. 숫자 표현식 평가가 오버플로를 생성하면 MySQL이 오류 메시지를 반영한다고 가정합니다. 이제 이 오버플로를 처리하기 위해 CAST의 도움으로 해당 숫자 값을 UNSIGNED로 변경할 수 있습니다.

예를 들어 BIGINT 최대값에 1을 추가하면 MySQL은 다음과 같이 오버플로로 인해 오류를 생성합니다. -

mysql> Select 9223372036854775807 + 1;
ERROR 1690 (22003): BIGINT value is out of range in '(9223372036854775807+1)'

이제 MySQL은 CAST의 도움으로 이러한 종류의 오버플로를 다음과 같이 처리합니다.

mysql> Select CAST(9223372036854775807 AS UNSIGNED) +1;

+------------------------------------------+
| CAST(9223372036854775807 AS UNSIGNED) +1 |
+------------------------------------------+
| 9223372036854775808                      |
+------------------------------------------+
1 row in set (0.07 sec)