0

私はこのコラムを持っています INT(10) ZEROFILL NOT NULL DEFAULT '0000000000',

しかし、のようなものを挿入すると91000000104294967295

そこに10桁の数字が許されるべきでしたね?

これを正しく行う方法は?

4

6 に答える 6

5

MySQLのINTフィールドで可能な最大値はです。21474836479100000010はそれよりも大きくなります。4294967295そのため、符号なし整数の最大値がオーバーフローしています。

11.1.4.1。整数型(正確な値)

INT    4    -2147483648 2147483647

BIGINT次の範囲のより大きな数を格納する場合に使用します。

BIGINT  8   -9223372036854775808    9223372036854775807
于 2013-01-18T06:43:30.917 に答える
4

Intには最大値の範囲があります:

INT 4   -2147483648 2147483647
        0   4294967295 (unsigned )

したがって、オーバーフローが原因で最大値を取得しています。代わりにbigintを使用してください。これは8バイトで、問題ありません。

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html#integer-types

BIGINT  8   -9223372036854775808    9223372036854775807
          0                 18446744073709551615
于 2013-01-18T06:44:05.733 に答える
2

MySQLでは、INT(10)は、値が10文字の値に制限されていることを意味するものではありません。これは、MySQLがこれらの値を返すときにスペース/ゼロで埋めようとすることを意味するだけです。

INT(10)、INT(5)、またはその他のINT(n)を含む符号付きINTの数値範囲は、-2,147,483,648 ... 2,147,483,647で、最大で10桁です。

于 2013-01-18T06:44:21.110 に答える
0

そこに10桁の数字が許されるべきでしたね?

いいえ、mySQLのINTおよび整数型のサイズは、フィールドにZEROFILLが指定されている場合の表示幅を設定します。

たとえば、挿入した値が123456の場合、クエリを実行すると0000123456と表示されます。これは表示幅であり、値には影響しません。

したがって、値の範囲は、表示幅ではなく、データ型自体によって決定されます。より大きな値を格納するには、データ型をBIGINTなどの適切なものに変更する必要があります。

mySQLリファレンスから:

INT : A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295.

于 2013-01-18T07:00:07.897 に答える
0

intの最大値に達しました。mysqlのintのint最大値の範囲は4294967295(符号なし)です。したがって、BIGINTを使用する必要があります。これについての詳細はここで入手できます: Mysql数値タイプ

お役に立てれば

敬具

于 2013-01-18T06:49:05.470 に答える
0

私はあなたがintmax値を取得すると信じています。INT(10)は、文字数を制限するためではなく、数字を埋めるためのものです。

MySQLは、これらの値を返すときに、これらの値をスペース/ゼロで埋めようとします。

于 2013-01-18T06:43:39.013 に答える