MySQLで列の値をゼロ埋めする方法(ZEROFILLの使い方)
MySQLでは、ZEROFILLという属性を使うことで、列に格納された数値を指定した表示幅までゼロで埋めて表示することができます。例えば、表示幅を5に設定した場合、値「9」は「00009」として表示されます。
この記事では、ZEROFILLの基本的な使い方を、実際のSQL文と実行結果とともに解説します。
ZEROFILLとは
ZEROFILLは、整数型の列定義に付与できる属性の一つです。この属性を設定すると、列定義で指定した表示幅(display width)に満たない桁数の値が、左側をゼロで埋められて表示されます。なお、元のデータそのものが変更されるわけではなく、あくまで表示上の見た目が変わる点に注意してください。
テーブルの作成
まず、ZEROFILL属性を持つテーブルを作成します。ここでは、表示幅5のINT型カラムにZEROFILLを設定しています。
mysql> create table DemoTable626 (Value int(5) zerofill); Query OK, 0 rows affected (0.71 sec)
レコードの挿入
次に、INSERTコマンドを使ってサンプルデータをいくつか登録します。桁数の異なる複数の値を挿入してみましょう。
mysql> insert into DemoTable626 values(9); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable626 values(12); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable626 values(567); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable626 values(3478); Query OK, 1 row affected (0.13 sec)
登録データの確認
SELECT文ですべてのレコードを表示します。
mysql> select *from DemoTable626;
実行すると、以下のような出力が得られます。
+-------+ | Value | +-------+ | 00009 | | 00012 | | 00567 | | 03478 | +-------+ 4 rows in set (0.00 sec)
実行結果のポイント
出力結果を見ると、すべての値が5桁になるよう先頭がゼロで埋められていることがわかります。
- 「9」→「00009」
- 「12」→「00012」
- 「567」→「00567」
- 「3478」→「03478」
このように、会員番号や注文番号など、桁数を揃えて表示したいケースでZEROFILLは非常に便利です。ただし、MySQL 8.0以降では表示幅の指定は非推奨となっているため、新しいプロジェクトではLPAD関数などを使った代替方法も検討するとよいでしょう。
-
MySQLで列の値と任意のテキストを連結して1つの列に表示する方法
MySQLで列の値とテキストを連結する方法MySQLでは、CONCAT()関数を使用することで、テーブルの列の値と任意のテキストを連結し、結果を1つの列として表示できます。本記事では、サンプルテーブルを作成し、実際に文字列を連結して表示するまでの手順を具体例とともに解説します。1. テーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> );Query OK, 0 rows affected (0.93 sec)こ
-
MySQLで条件に応じて同じ列の2つの値を連結する方法
MySQLで条件に応じて同じ列の2つの値を連結する方法 MySQLでは、max() などの集計関数と CASE 式を組み合わせることで、条件の異なる同じ列の値を1つの文字列として連結できます。この記事では、サンプルテーブルを作成しながら、具体的な手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、create table コマンドでテーブルを作成しましょう。 mysql> create table DemoTable1869 ( Id int, &nb