MySQLのZEROFILL(ゼロフィル)とは?使い方と表示幅の仕組みを実例で解説
ZEROFILL(ゼロフィル)とは?
MySQLのZEROFILL属性は、カラム定義で指定された表示幅に満たない数値の左側を0(ゼロ)で埋めて表示する機能です。実際に格納される値そのものが変わるわけではなく、あくまで「表示」の際にパディングが行われる点がポイントです。
例えば、カラムを INT(8) と定義した場合、表示幅は8桁になります。ここに4376という数値を格納すると、合計8桁になるように左側へゼロが埋められ、次のように表示されます。
00004376
テーブルの作成
まず、ZEROFILLを指定したテーブルを作成してみましょう。
mysql> create table DemoTable
-> (
-> Number int(8) zerofill
-> );
Query OK, 0 rows affected (0.50 sec)
レコードの挿入
INSERT文を使って、いくつかのレコードをテーブルに挿入します。
mysql> insert into DemoTable values(10);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(1234);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(1);
Query OK, 1 row affected (0.47 sec)
mysql> insert into DemoTable values(678965);
Query OK, 1 row affected (0.20 sec)
レコードの確認
SELECT文ですべてのレコードを表示してみます。
mysql> select *from DemoTable;
出力結果
上記のクエリを実行すると、次のような出力が得られます。
+----------+
| Number |
+----------+
| 00000010 |
| 00001234 |
| 00000001 |
| 00678965 |
+----------+
4 rows in set (0.00 sec)
まとめと注意点
このようにZEROFILLを使えば、数値が常に一定の桁数で揃って表示されるため、会員番号や商品コードなど、見た目の統一が必要な場面で非常に便利です。ただし、利用時には以下の点に留意してください。
- ZEROFILLはあくまで表示上の装飾であり、格納される実際の数値は変わりません。
- 負の数値の場合、マイナス記号も表示幅に含まれるため、意図した通りの桁数にならないことがあります。
- MySQL 8.0以降では、整数型に対する表示幅の指定やZEROFILLは非推奨(deprecated)となっており、将来のバージョンで削除される可能性があります。新規開発では、LPAD関数などで表示を整形する方法も検討しましょう。
-
MySQLのUNHEX()に相当するPHP関数とは?hex2bin()の使い方を解説
PHPにおけるMySQLのUNHEX()相当の関数MySQLのUNHEX()関数と同じ処理をPHPで行いたい場合は、hex2bin()関数を使用します。この関数は、16進数形式の文字列をバイナリデータ(元の文字列)に変換するもので、まさにMySQLのUNHEX()に相当する機能を持っています。hex2bin()の基本構文構文は以下の通りです。$anyVariableName = hex2bin(yourHexadecimalValue);引数には16進数の文字列を指定し、戻り値として変換後のバイナリデータが返されます。PHPでの実装例実際にhex2bin()を使用したサンプルコードを見てみまし
-
MySQLストアドプロシージャにおける「@」記号の使い方|ユーザー定義セッション変数の活用例
MySQLのストアドプロシージャ内で使われる「@」記号は、ユーザー定義のセッション変数(ユーザー変数)を扱うために使用されます。セッション変数に値を格納しておけば、プロシージャの実行後も同じセッション内であればその値を参照できます。この記事では、実際にテーブルを作成し、ストアドプロシージャの中で「@」変数を使ってレコード数を取得する手順を順番に解説します。1. サンプルテーブルの作成まず、学生名を保存するテーブルを作成します。mysql> create table DemoTable ( StudentName varchar(50) ); Query OK, 0 rows af