MySQLでハイフン区切りのゼロ埋め(ゼロパディング)を行う方法
MySQLでは、CONCAT()とRIGHT()関数を組み合わせることで、ハイフン(-)で区切られた形式のゼロ埋め(ゼロパディング)文字列を簡単に生成できます。本記事では、数値データの先頭に「000-」のようなプレフィックスを付与し、固定長の文字列として表示する方法を具体的なサンプルコードとともに解説します。
1. サンプルテーブルを作成する
まず、テスト用のテーブルを作成します。
mysql> create table DemoTable829(SerialNumber int); Query OK, 0 rows affected (0.64 sec)
SerialNumberというint型のカラムを持つシンプルなテーブルを用意しました。
2. レコードを挿入する
次に、INSERT文を使ってテーブルにいくつかのレコードを追加します。
mysql> insert into DemoTable829 values(100); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable829 values(101); Query OK, 1 row affected (0.26 sec) mysql> insert into DemoTable829 values(102); Query OK, 1 row affected (0.08 sec) mysql> insert into DemoTable829 values(103); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable829 values(104); Query OK, 1 row affected (0.60 sec)
3. テーブルの内容を確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable829;
実行結果は以下の通りです。
+--------------+ | SerialNumber | +--------------+ | 100 | | 101 | | 102 | | 103 | | 104 | +--------------+ 5 rows in set (0.00 sec)
4. ハイフン区切りのゼロ埋めクエリを実行する
ここが本題となる部分です。以下のクエリを使用すると、ハイフンで区切られたゼロパディング済みの文字列を取得できます。
mysql> select RIGHT(CONCAT('000-', SerialNumber), 7) from DemoTable829;実行結果:
+----------------------------------------+
| RIGHT(CONCAT('000-', SerialNumber), 7) |
+----------------------------------------+
| 000-100 |
| 000-101 |
| 000-102 |
| 000-103 |
| 000-104 |
+----------------------------------------+
5 rows in set (0.00 sec)クエリの仕組み
このテクニックのポイントは、2つの関数の組み合わせにあります。
- CONCAT('000-', SerialNumber):数値の先頭に「000-」という文字列を連結します。
- RIGHT(..., 7):連結後の文字列の右側から7文字分だけを取り出し、常に一定の長さの文字列に整形します。
この方法なら、元の数値が何桁であっても、結果は必ず7文字(例:「000-100」)に揃えられます。
補足:LPAD関数を使った代替手法
目的によっては、LPAD()関数を使う方法も便利です。たとえば、単純に先頭をゼロで埋めたい場合は以下のように記述できます。
mysql> select LPAD(SerialNumber, 6, '0') from DemoTable829;
ただし、ハイフンなどの区切り文字を含む形式にしたい場合は、本記事で紹介したCONCAT()とRIGHT()の組み合わせが最も簡単で確実な方法です。請求書番号やシリアル番号など、決まったフォーマットでIDを表示したい場面でぜひ活用してください。
-
MySQLでVARCHAR文字列からハイフン以降の数値を削除する方法(SUBSTRING_INDEX活用)
MySQLで「John-232」のようなハイフンを含むVARCHAR型の文字列から、ハイフン以降の数値部分を削除したい場合があります。このような処理には、SUBSTRING_INDEX() 関数を使用すると簡単に実現できます。SUBSTRING_INDEX()関数とはSUBSTRING_INDEX(文字列, 区切り文字, 出現回数) は、指定した区切り文字が現れる位置より前の部分文字列を返す関数です。第3引数に「1」を指定すると、区切り文字が最初に出現する位置より前の文字列だけが取得されます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create t
-
ApacheとMySQLを連携させる方法|ユーザー認証とログ管理の基本
ApacheとMySQLの連携とは本記事では、Webサーバー「Apache」とデータベース「MySQL」を組み合わせて活用する方法を解説します。Apacheは、Apache Software Foundationによって開発・保守されているWebサーバーソフトウェアです。ユーザーからWebページへのアクセス要求(リクエスト)を受け付け、いくつかのセキュリティチェックを実施したうえで、目的のページへとユーザーを誘導します。MySQLによるユーザー認証MySQLデータベースを使ってユーザー認証を行えるプログラムは数多く存在します。これらのプログラムを利用すれば、アクセスログをMySQLのテーブルに