SQLで桁を揃える!PostgreSQLでの0埋めのやり方と注意点

データベースでは、桁数を揃えて表示したい場面がよくあります。
例えば「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()関数は文字列操作関数なので、数値型のままでは使えません。
このため、::textCAST(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ツール連携でも頻出のテクニックなので、ぜひ覚えておきましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

・20代
・IT未経験からSIerに就職、開発とプロジェクト管理を経験
・働いている中で会計に興味を持ち、ERPの会計領域を挑戦中
・筋トレ最高!
保有資格:日商簿記1級/応用情報/ITストラテジスト

コメント

コメントする

目次