ZEROFILL
でINT
DataTypeを定義することの利点/使用法は何MySQL
ですか?
`id` INT UNSIGNED ZEROFILL NOT NULL
ZEROFILL
でINT
DataTypeを定義することの利点/使用法は何MySQL
ですか?
`id` INT UNSIGNED ZEROFILL NOT NULL
タイプで列を選択するとZEROFILL
、列定義で指定された表示幅まで、フィールドの表示値にゼロが埋め込まれます。表示幅より長い値は切り捨てられません。ZEROFILL
の使用はも意味することに注意してくださいUNSIGNED
。
と表示幅を使用ZEROFILL
しても、データの格納方法には影響しません。表示方法のみに影響します。
の使用を示す SQL の例を次に示しますZEROFILL
。
CREATE TABLE yourtable (x INT(8) ZEROFILL NOT NULL, y INT(8) NOT NULL);
INSERT INTO yourtable (x,y) VALUES
(1, 1),
(12, 12),
(123, 123),
(123456789, 123456789);
SELECT x, y FROM yourtable;
結果:
x y
00000001 1
00000012 12
00000123 123
123456789 123456789
ZEROFILL
の使用法が興味深いかもしれない、理解するための 1 つの例:
ドイツでは、5 桁の郵便番号があります。ただし、これらのコードはゼロで始まる場合があるため80337
、ミュンヘンの有効な郵便番号で01067
あり、ベルリンの郵便番号です。
ご覧のとおり、ドイツ市民は郵便番号が 5 桁のコードとして表示されることを期待しているため、1067
奇妙に見えます。
これらのデータを保存するには、VARCHAR(5)
またはを使用できますがINT(5) ZEROFILL
、ゼロで埋められた整数には 2 つの大きな利点があります。
1067
と、まだ01067
戻ってきますおそらく、この例は の使用法を理解するのに役立ちますZEROFILL
。
四角い箱が好きな乱れた性格向けの機能です。
あなたが挿入します
1
23
123
ただし、選択すると、値がパディングされます
000001
000023
000123
この「整数」を「テキスト」としてソートする必要がある他のもの (別の数値またはテキスト) と連結する必要がある場合に、正しいソートに役立ちます。
例えば、
A-005 または 10/0005 として連結された整数フィールド番号 (5 としましょう) を使用する必要がある場合
私はパーティーに遅れていることを知っていますが、ゼロフィルは TINYINT(1) のブール表現に役立ちます。Null は常に False を意味するとは限りません。tinyint をゼロフィルすることで、これらの値を効果的に INT に変換し、アプリケーションが対話時に混乱する可能性を取り除きます。アプリケーションは、プリミティブ データ型 True = Not(0) と同様の方法でこれらの値を処理できます。
ゼロフィル
これは基本的に、整数値 23 が幅 8 の INT 列に挿入されると、使用可能な残りの位置が自動的にゼロで埋められることを意味します。
したがって
23
になります:
00000023
数値列にZEROFILLを指定すると、MySQLは自動的にUNSIGNED属性を列に追加します。
UNSIGNED属性を許可する数値データ型は、SIGNEDも許可します。ただし、これらのデータ型はデフォルトで署名されているため、SIGNED属性は効果がありません。
上記の説明は、MYSQLの公式Webサイトから引用したものです。
オプションの (非標準) 属性 ZEROFILL と組み合わせて使用すると、スペースのデフォルトのパディングがゼロに置き換えられます。たとえば、INT(4) ZEROFILL として宣言された列の場合、値 5 は 0005 として取得されます。