ここから本文です

MySQLでint(11)を良く見かけるのですが、int型最大値は「2147483647」なのに何故in...

1さん

2013/12/2707:27:40

MySQLでint(11)を良く見かけるのですが、int型最大値は「2147483647」なのに何故int(11)が成立するのでしょうか? int(10)までだと思うのですが…

括弧内の数字に上限はないのでしょうか?
単なる表示幅だから、例えば00002147483647でも良い?

それともマイナスを考慮してint(11)?

補足例えばですが、int型最大値桁数を超える「int(12)」を指定してもMySQL的には問題ない、ということでしょうか?

閲覧数:
39,235
回答数:
1

違反報告

ベストアンサーに選ばれた回答

編集あり2013/12/2809:51:14

マイナスを考慮してint(11)というのは、ある意味正解です。

そもそもMySQLのint(11)というのは、numeric(11)のように桁数を指定するオプションではなく、標準SQLなどには存在しない、「勝手構文(方言)」です。
その意味は、「()内で指定した桁数に満たない場合は左側に空白を埋める」です。
int(11)を指定して、値が「2147483647」なら結果は「_2147483647」(_は空白)となりますし、「123」なら「________123」となりますし、「-1234567890」なら「-1234567890」となります。

しかしint(10)を指定した場合、-1000000000を下回る数字のときだけ11桁の文字列、それ以外は10桁の文字列となり、ずれが発生してしまいます。

MySQL的に、という話であれば、極端な話、int(100)でも問題ありません。
単に先頭に大量の空白がつくだけです。
逆にint(1)でも問題はありません。
単に前方空白による桁あわせが行われないだけです。

質問した人からのコメント

2013/12/30 11:12:36

回答ありがとうございました。

>標準SQLなどには存在しない、「勝手構文(方言)」
・初めて知りました

>()内で指定した桁数に満たない場合は左側に空白を埋める
>int(100)でも問題ありません
・大変勉強になりましたー

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる