>  기사  >  데이터 베이스  >  MySQL은 범위를 벗어난 값을 어떻게 처리합니까?

MySQL은 범위를 벗어난 값을 어떻게 처리합니까?

王林
王林앞으로
2023-08-26 22:01:061515검색

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으로 문의하시기 바랍니다. 삭제