ホームページ > データベース > mysql チュートリアル > MySQL は範囲外の値をどのように処理しますか?

MySQL は範囲外の値をどのように処理しますか?

王林
リリース: 2023-08-26 22:01:06
転載
1577 人が閲覧しました

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

列のデータ型の許容範囲を超える MySQL 値の処理は、次のように SQL モードによって異なります。

(A) SQL 厳密モードを有効にする - 厳密 SQL モードが有効な場合、範囲値を入力すると MySQL はエラーを返します。この場合、一部またはすべての値の挿入は失敗します。

たとえば、データ型が TINYINT と UNSIGNED TINYINT の 2 つの列を持つテーブルを作成します。

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 はエラーが発生し、2 回挿入されます。すべて失敗しました。次のクエリで確認できます。

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート