2009-10-27 5 views
5

INT(12)とINT(10)またはINT(8)を使用すると、これは実際に私のコードでどのように使用されますか?INT(10)とINT(12)の違いは何ですか(コードに適用される場合)。

(これはprevious questionのスピンオフです)私はマニュアルを読みましたが、私は彼らの言いたいことを理解していると思いますが、実際にphp/mysqlコーディングにどのように適用されるかはわかりません。

誰かが実際に重要な場所の例を挙げることはできますか?

答えて

6

短い回答:違いはありません。

表示幅は「メタデータ」に戻されます。それを利用するのはアプリケーションの責任です。通常は無視されます。私はあなたがmysql関数を使ってそれを得ることはできないと思っていますが、mysqli_fetch_field_directを使ってmysqliを使うことができるかもしれません。

+0

BIGINT()に追加するときはどうしたらいいですか?乱数を選ぶ? 42? – Citizen

+0

括弧は必要ありません。あなたは 'BIGINT'と言うことができます。 –

+2

あなたのために1つの無料インターネット、あなた! – Citizen

4

返されるデータに影響を与えないため、何も変更する必要はありません。この情報は、その情報を使用したいアプリケーションが使用できます。

は、別の拡張は、任意のタイプ(例えば、INT(4))のための基本キーワードに続く括弧内整数データ型の表示幅を特定するためのMySQLに支持されている。http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

を見ますこのオプションの表示幅は、列に指定された幅よりも小さい幅を持つ整数値をスペースで左に埋めて表示するためにアプリケーションで使用されます。 (すなわち、この幅は、結果セットで返されたメタデータに存在する、である。それが使用されるかどうかかはアプリケーション次第である。

表示幅ができる値の範囲を制限しません列に指定された幅を超える値を持つ値に対して表示される桁数も表示されません。たとえば、SMALLINT(3)として指定された列は、通常のSMALLINTの範囲が-32768〜32767で、3文字以上の値は3文字以上で表示されます。 MySQLで型を整数へ

(強調鉱山)

16

引数は、データの記憶や各データ型によってサポートされる値の範囲に影響を及ぼしません。

引数は、ディスプレイの幅にのみ適用されます。これは、Jonathan Finglandが言及しているようにアプリケーションで使用される可能性があります。 ZEROFILLオプションと組み合わせて使用​​する場合にもアップしています:

CREATE TABLE foo (
    i INT(3) ZEROFILL, 
    j INT(6) ZEROFILL, 
    k INT(11) ZEROFILL 
); 
INSERT INTO foo (i, j, k) VALUES (123, 456, 789); 
SELECT * FROM foo; 

+------+--------+-------------+ 
| i | j  | k   | 
+------+--------+-------------+ 
| 123 | 000456 | 00000000789 | 
+------+--------+-------------+ 

ZEROFILLは必ずデータが整数型引数に等しい数字の少なくとも数をゼロ詰めされますどのように参照してください。

ZEROFILLが指定されていない場合、データにはスペースが埋め込まれますが、スペースはしばしばトリミングされるため、その違いを確認することは困難です。

PHPコードにどのような影響がありますか?なし。カラムデータ、スペースパッドまたはゼロパッドの値を出力する必要がある場合は、より柔軟に使用することができます。sprintf()

関連する問題