0

MySql のデータ型の長さについて少し混乱しています。http://dev.mysql.com/doc/refman/5.0/en/data-types.htmlのリファレンス マニュアルを読みましたが、「INT(M)」と書くと...

M は、整数型の最大表示幅を示します。浮動小数点型と固定小数点型の場合、M は格納できる合計桁数です。文字列型の場合、M は最大長です。M の最大許容値は、データ型によって異なります。

次に、INT(10) [符号なし] のようなフィールド データ型を使用してテーブルに列を追加しました。最大値は -2147483648 / 2147483647 であることがわかっています。

ただし、INT(11) に編集すると、MySQL は、長さが範囲外であっても、エラーなしでより大きな長さを設定することを許可します。この場合、2147483647 より大きい値を設定した場合にのみエラーが発生します。

前もって感謝します、

マックス

4

2 に答える 2

1

The M value doesn't affect the range of numbers you can store. You can save the same numbers in INT(1) as in INT(30). The number does only affect the ZEROFILL behavior.

mysql> CREATE TEMPORARY TABLE foobar(x INT(40) ZEROFILL);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO foobar(x) VALUES (42);
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM foobar;
+------------------------------------------+
| x                                        |
+------------------------------------------+
| 0000000000000000000000000000000000000042 |
+------------------------------------------+
1 row in set (0.00 sec)

mysql>
于 2010-12-13T18:13:23.170 に答える
0

推測することしかできませんが、表示幅の設定は、競合を認識するのに十分なほど賢くないと思います。しかし、表示幅はとにかくクライアントプログラムの推奨事項にすぎないので、そうである必要はないと私は主張します。

于 2010-12-13T17:58:04.610 に答える