MySQLのINTデータ型におけるZEROFILLの使い方と効果
ZEROFILLとは何か?
MySQLでは、数値型のカラムにZEROFILL属性を指定すると、カラム定義で指定された表示幅に満たない値に対して、自動的に先頭へゼロ(0)を埋め込んで(ゼロパディングして)表示してくれます。これにより、桁数を揃えた見やすい出力を簡単に実現できます。
実際に試してみよう
例として、showzerofillというテーブルを作成し、いくつかの値を挿入してみます。Val1にはINT(5) ZEROFILLを、比較用のVal2には通常のINT(5)を指定します。
mysql> Create Table showzerofill(Val1 INT(5) ZEROFILL, Val2 INT(5)); Query OK, 0 rows affected (0.09 sec) mysql> Insert into showzerofill(Val1, Val2) values(1,1),(12,12),(123,123),(1234,1234),(12345,12345); Query OK, 5 rows affected (0.03 sec) Records: 5 Duplicates: 0 Warnings: 0
実行結果の確認
テーブルの中身をSELECT文で確認すると、ZEROFILLがVal1カラムの値に与える影響を一目で理解できます。
mysql> Select * from showzerofill;
+-------+-------+ | Val1 | Val2 | +-------+-------+ | 00001 | 1 | | 00012 | 12 | | 00123 | 123 | | 01234 | 1234 | | 12345 | 12345 | +-------+-------+ 5 rows in set (0.00 sec)
この結果からわかるように、Val1(ZEROFILL指定あり)では、カラム定義の表示幅である5桁に満たない値の先頭がゼロで埋められています。一方、Val2(ZEROFILL指定なし)では、値はそのまま右寄せで表示されるだけです。
補足:ZEROFILL利用時の注意点
- ZEROFILLを指定したカラムは、暗黙的にUNSIGNED(符号なし)属性も持つことになります。つまり負の値を格納できません。
- 表示幅(例:
INT(5)の「5」)はあくまで表示上の最小桁数であり、格納できる値の範囲には影響しません。表示幅を超える値は、そのまま完全な形で表示されます。 - なお、MySQL 8.0.17以降では、整数型の表示幅およびZEROFILL属性は非推奨(deprecated)となっているため、新規開発では注意が必要です。
まとめ
このように、カラムの値を特定の桁幅で揃えて表示したい場合には、そのカラムにZEROFILLを定義するのが有効です。会員番号や注文番号など、桁数を揃えたいID系のデータを扱う際に特に便利な機能です。
-
MySQLでテーブルのカラム名(列名)を取得する構文とは?
MySQLでは、information_schema.columns テーブルを参照することで、指定したテーブルのカラム名(列名)を簡単に取得できます。データベースの構造を確認したい場合や、動的にカラム情報を取得したいアプリケーションを開発する際に非常に便利な方法です。カラム名を取得する基本構文テーブルのカラム名を取得するには、以下の構文を使用します。SELECT column_name FROM information_schema.columns WHERE table_schema = データベース名 AND table_name = テーブル名;table_schema にはデータベー
-
C#におけるメソッドオーバーロードのさまざまな方法とは?
C#のメソッドオーバーロードとはC#では、同じ名前を持つ複数のメソッドを定義することを「メソッドオーバーロード」と呼びます。オーバーロードを実現するには、以下の2つの方法があります。・パラメータのデータ型が異なる場合 ・パラメータの数が異なる場合戻り値の型だけが異なる場合はオーバーロードとして認識されないため、必ずパラメータに違いが必要です。それでは、それぞれの方法について具体例を見ていきましょう。1. パラメータのデータ型が異なる場合同じ「print」というメソッド名でも、引数のデータ型がint、double、stringと異なることで、それぞれ別のメソッドとして定義できます。コンパイラは呼