Oracle SQLでは、数値や文字列の桁数をそろえるために、文字列の先頭へ指定した文字を追加したい場面があります。例えば、商品番号を5桁表示にしたり、社員番号の前に0を追加して管理番号の形式を統一したりするケースです。
このような処理にはOracle SQLのLPAD関数を使用します。この記事では、LPAD関数の基本的な使い方や具体例、注意点について詳しく解説します。
Oracle SQLで左側に文字を埋め込む関数はLPAD
Oracle SQLで指定した桁数になるまで文字列の左側へ指定文字を追加する場合は、LPAD関数を使用します。
LPADは「Left PAD」の略で、対象となる文字列の左側(Left)を指定した文字で埋める(PAD)ための関数です。
基本的な構文は以下の通りです。
LPAD(対象文字列, 全体の桁数, 埋める文字)
例えば、文字列「123」を5桁にしたい場合、以下のように記述します。
SELECT LPAD('123', 5, '0') FROM DUAL;
実行結果は以下になります。
00123
LPAD関数の基本的な使い方
LPAD関数では、第2引数で最終的な文字列の長さを指定し、第3引数で不足分を埋める文字を指定します。
例えば、商品コードを8桁で管理したい場合、以下のようなSQLになります。
SELECT LPAD(product_code, 8, '0') FROM products;
商品コードが「4567」の場合、結果は「00004567」となり、常に8桁の形式で表示できます。
このような形式調整は、帳票作成やCSV出力、システム間連携などでよく利用されます。
LPADを使ったゼロ埋めの具体例
業務システムでは、番号を一定の桁数で表示するゼロ埋め処理が頻繁に発生します。
例えば、社員番号を6桁で表示する場合は次のように記述します。
SELECT LPAD(employee_id, 6, '0') AS employee_no FROM employees;
employee_idが「25」の場合、表示結果は以下になります。
000025
このように、データ自体を変更せず、表示時だけ桁数をそろえることも可能です。
LPAD関数を使用する際の注意点
LPADで指定する桁数は、追加後の文字列全体の長さです。元の文字列が指定した桁数より長い場合、Oracleは右側を切り捨てず、左側から指定桁数分だけを返します。
例えば、以下のSQLを実行した場合を考えます。
SELECT LPAD('123456', 4, '0') FROM DUAL;
結果は「1234」となります。そのため、重要なデータで使用する場合は、元データの長さを確認してから利用することが大切です。
また、LPADは文字列処理関数のため、数値データを扱う場合でも文字列として処理されます。必要に応じてTO_CHAR関数と組み合わせることがあります。
LPADとRPADの違い
Oracle SQLにはLPADと似た関数としてRPADがあります。違いは文字を追加する位置です。
| 関数 | 文字を追加する位置 | 例 |
|---|---|---|
| LPAD | 左側 | LPAD(‘123′,5,’0’) → 00123 |
| RPAD | 右側 | RPAD(‘123′,5,’0’) → 12300 |
番号の先頭に0を追加したい場合はLPAD、文字列の後ろに空白や記号を追加して固定長データを作りたい場合はRPADを使用します。
例えば、固定長ファイルを作成する場合には、項目の長さを合わせるためにRPADが利用されることがあります。
まとめ
Oracle SQLで指定した桁数になるまで文字列の左側へ指定文字を埋め込む場合は、LPAD関数を使用します。
LPAD(文字列, 桁数, 埋める文字)という形式で記述することで、ゼロ埋めやコード形式の統一などを簡単に実現できます。
システム開発やデータ加工では、番号管理や帳票出力などでLPADを利用する場面が多いため、基本的な使い方と注意点を理解しておくと便利です。


コメント