MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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系のデータを扱う際に特に便利な機能です。

  1. MySQLでテーブルのカラム名(列名)を取得する構文とは?

    MySQLでは、information_schema.columns テーブルを参照することで、指定したテーブルのカラム名(列名)を簡単に取得できます。データベースの構造を確認したい場合や、動的にカラム情報を取得したいアプリケーションを開発する際に非常に便利な方法です。カラム名を取得する基本構文テーブルのカラム名を取得するには、以下の構文を使用します。SELECT column_name FROM information_schema.columns WHERE table_schema = データベース名 AND table_name = テーブル名;table_schema にはデータベー

  2. C#におけるメソッドオーバーロードのさまざまな方法とは?

    C#のメソッドオーバーロードとはC#では、同じ名前を持つ複数のメソッドを定義することを「メソッドオーバーロード」と呼びます。オーバーロードを実現するには、以下の2つの方法があります。・パラメータのデータ型が異なる場合 ・パラメータの数が異なる場合戻り値の型だけが異なる場合はオーバーロードとして認識されないため、必ずパラメータに違いが必要です。それでは、それぞれの方法について具体例を見ていきましょう。1. パラメータのデータ型が異なる場合同じ「print」というメソッド名でも、引数のデータ型がint、double、stringと異なることで、それぞれ別のメソッドとして定義できます。コンパイラは呼