MySQLで int(11) という表記を見かけるのですが、int型最大値は 2147483647 なのに何故int(11)が成立するのでしょうか?
MySQLの int(11) とは
MySQLのint(11)というのは、numeric(11)のように桁数を指定するオプションではなく、標準SQLなどには存在しない、MySQL独特の構文 (方言) です。
その意味は、()内で指定した桁数に満たない場合は左側に空白を埋めるということです。
int(11)の 11 は 表示幅の指定であり、有効桁数の指定ではありません。
空白埋め (0埋め) される桁数です。
int(11) だろうと int(1) だろうとint型に入れられる値の範囲は
-2,147,483,648 ~ 2,147,483,647(signed)
0 ~ 4,294,967,295(unsigned)
となります。
MySQLの int(11) の例
例えばint(11)を指定して、
値が「2147483647」なら結果は「_2147483647」(_は空白)となります。
値が「123」なら結果は「________123」となります。
値が「-1234567890」なら結果は「-1234567890」となります。
コメント