データベースでは、桁数を揃えて表示したい場面がよくあります。
例えば「1」「2」「3」を「001」「002」「003」のように統一したいときに使うのが0埋め(ゼロパディング)です。
LPAD関数を使った0埋めの基本構文
PostgreSQLで最もシンプルに0埋めする方法は、LPAD()関数を使うことです。
構文
LPAD(文字列, 総桁数, 埋める文字)第1引数:対象の文字列
第2引数:結果として欲しい桁数
第3引数:埋める文字(通常は '0')
例
SELECT LPAD('5', 3, '0');
-- 結果: '005'このように、左側を「0」で埋めて3桁に揃えられます。
桁数がすでに超えている場合は、そのままの文字列が返されます。
実践例:数値を0埋めして桁を揃える
実際のデータテーブルを使った例を見てみましょう。
テーブル例
CREATE TABLE employees (
id SERIAL,
emp_code INTEGER
);
INSERT INTO employees (emp_code) VALUES
(1), (23), (456);0埋めして表示
SELECT emp_code, LPAD(CAST(emp_code AS VARCHAR), 4, '0') AS emp_code_padded
FROM employees;emp_codeがINTEGER型の場合、そのままではLPAD()を使えないため、CASTで文字列型に変換します。
結果

emp_code_paddedが4桁に揃えられて表示されました。
注意点:数値型と文字列型の違い
LPAD()関数は文字列操作関数なので、数値型のままでは使えません。
このため、::textやCAST(emp_code AS VARCHAR)を使って明示的に型変換する必要があります。
他の方法:TO_CHAR関数で0埋めする
数値の0埋めでは、TO_CHAR()関数を使う方法もあります。
こちらはフォーマット指定ができるのが特徴です。
構文
TO_CHAR(数値, フォーマット)例
SELECT TO_CHAR(5, 'FM0000');
-- 結果: '0005''FM':前後の空白を除去'0000':4桁の0埋めフォーマット
この方法は、数値型をそのまま扱えるため、文字列型への変換が不要です。
帳票やシーケンス番号の整形など、業務システムでよく使われます。
まとめ:0埋めを使いこなして見やすいデータを作る
PostgreSQLで0埋めする方法は主に2つです:
| 方法 | 特徴 | 用途例 |
|---|---|---|
| LPAD() | 文字列を指定桁数に左詰めで埋める | ID、コード整形 |
| TO_CHAR() | 数値フォーマットに柔軟対応 | 金額、日付、連番 |
結論:
- 文字列型 →
LPAD() - 数値型 →
TO_CHAR()
を使い分けるのがベストです。
0埋めを適切に使うことで、データの可読性が高まり、システム間連携や帳票出力時のエラー防止にもつながります。
業務システム開発やBIツール連携でも頻出のテクニックなので、ぜひ覚えておきましょう。

コメント