MySQLで0埋めをする方法

MySQLで0埋めをする方法

MySQLで数値を0埋めする方法にはいくつかの方法があります。
データの表示形式や出力の要件に応じて異なる方法を選ぶことができます。
以下に代表的な方法をいくつか説明します。

1. LPAD関数を使用する方法

LPAD(Left PAD)は文字列の左側を指定した文字で埋める関数です。
この関数を使用して、数値を指定した桁数に0で埋めることができます。
LPADの構文は以下の通りです。

LPAD(文字列, 希望する長さ, 埋める文字)

具体的な使用例は以下の通りです。
例えば、数字が格納されているカラムnumberがあり、これを5桁の0埋めの形式で表示したい場合、次のSQLを使用します。

SELECT LPAD(number, 5, '0') AS padded_number FROM test_table;

このクエリは、test_tableテーブルのnumberカラムの各値を5桁にし、必要に応じて左側に0を追加します。
たとえば、numberの値が42であれば、出力は00042になります。

2. FORMAT関数を使用する方法

FORMAT関数は数値をフォーマットして文字列として返すために使用されます。
主に数値のカンマ区切りや小数点以下の桁数を指定するために使われますが、整数部分を0埋めする用途にも使えます。
以下は使用例です。

SELECT FORMAT(123, 5) AS formatted_number;

このクエリでは、数値123を000123という形式で表示します。
ただし、FORMAT関数は通常の0埋めとは少し異なり、小数点以下の形式や桁区切りを行うため、整数の0埋めにはLPADの方が一般的です。

3. Zerofill属性を使用する方法

MySQLでは、テーブルのカラム定義時にZEROFILL属性を使用することも可能です。
この属性を付与することで、そのカラムに格納された数値は指定された桁数になるまで自動的に0で埋められます。

例えば、idというカラムに対してZEROFILLを指定するには、以下のようにテーブルを定義します。

CREATE TABLE test_table (
  id INT(5) ZEROFILL,
  name VARCHAR(50)
);

この場合、idカラムに42という値を挿入すると、自動的に00042として保存されます。
ZEROFILL属性はカラムのデータ型が整数(INT、TINYINT、BIGINTなど)である場合に使用可能です。
ただし、ZEROFILLは最新のバージョンでは非推奨になっているようです。

4. フォーマット指定を使用する方法

クエリを少し工夫することでもフォーマット指定ができます。
例えば、整数の数値を6桁に0埋めしたい場合、LPADを使用するのが最も簡単ですが、以下のような方法でも実現可能です。

SELECT CASE 
  WHEN number < 10 THEN CONCAT('0000', number)
  WHEN number < 100 THEN CONCAT('000', number)
  WHEN number < 1000 THEN CONCAT('00', number)
  WHEN number < 10000 THEN CONCAT('0', number)
  ELSE number 
END AS padded_number 
FROM test_table;

この方法ではCASE文を使用して数値の長さに応じて0を追加しています。
ただし、冗長なためLPAD関数の方が推奨されます。

まとめ

MySQLで数値を0埋めするには、LPAD関数が最も一般的で簡単です。
ZEROFILL属性を使用する方法もありますが、これは最新バージョンでは非推奨の上に、テーブル定義時に適用されるため既存のデータに対しては直接使用できません。
その他にも、FORMATやCONCAT関数を使う方法がありますが、要件に応じて適切な方法を選びましょう。