LPADとRPADファンクションは、Oracleデータベースで文字列を特定の長さに整形する際に非常に便利なツールです。本記事では、初心者にも分かりやすい構成で基礎的な使い方から応用例までを紹介します。さらに、SCOTTスキーマを用いた実例やベストプラクティスもご紹介します。
本記事ではSCOTTサンプルスキーマを使用した例で解説します。
SCOTTサンプルスキーマは以下を実行することでインポートおよび使用が可能です。
$ sqlplus / as sysdba
SQL> @?/rdbms/admin/utlsampl.sql
$ sqlplus scott/tiger
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
1. LPAD, RPADとは?
LPADとRPADは、文字列を指定した長さまでパディング(埋め込み)するためのOracle SQLファンクションです。
- LPAD: 左側を指定文字で埋める。
- RPAD: 右側を指定文字で埋める。
これらは、データ整形、帳票作成、ログの見やすさ向上など、さまざまな場面で活用されます。
2. 基本構文と動作の仕組み
LPADの構文
LPAD(文字列, 長さ, パディング文字)
RPADの構文
RPAD(文字列, 長さ, パディング文字)
| 引数 | 説明 |
|---|---|
| 文字列 | 対象となる文字列。 |
| 長さ | 最終的な文字列の長さ。 |
| パディング文字 | 長さに満たない部分を埋める文字。省略時はスペースが使用されます。 |
3. SCOTTスキーマを用いた実例
3.1 LPADの例:従業員番号をゼロで埋める
以下のSQLでは、EMPNO列の値を5桁の文字列に整形します。
SELECT EMPNO, LPAD(EMPNO, 5, '0') AS PADDED_EMPNO
FROM EMP;
結果
SQL> SELECT EMPNO, LPAD(EMPNO, 5, '0') AS PADDED_EMPNO
2 FROM EMP;
EMPNO PADDED_EMPNO
---------- --------------------
7369 07369
7499 07499
7521 07521
7566 07566
7654 07654
7698 07698
7782 07782
7788 07788
7839 07839
7844 07844
7876 07876
7900 07900
7902 07902
7934 07934
14 rows selected.
3.2 RPADの例:役職名を整形
JOB列の値を10文字の文字列に整形し、余白部分を*で埋めます。
SELECT JOB, RPAD(JOB, 10, '*') AS PADDED_JOB
FROM EMP;
結果
SQL> SELECT JOB, RPAD(JOB, 10, '*') AS PADDED_JOB
2 FROM EMP;
JOB PADDED_JOB
--------- ----------------------------------------
CLERK CLERK*****
SALESMAN SALESMAN**
SALESMAN SALESMAN**
MANAGER MANAGER***
SALESMAN SALESMAN**
MANAGER MANAGER***
MANAGER MANAGER***
ANALYST ANALYST***
PRESIDENT PRESIDENT*
SALESMAN SALESMAN**
CLERK CLERK*****
CLERK CLERK*****
ANALYST ANALYST***
CLERK CLERK*****
14 rows selected.
3.3 データの視覚的整形
従業員名(ENAME)を左揃えで10文字幅、役職名(JOB)を右揃えで10文字幅に整形して連結します。
SELECT
LPAD(ENAME, 10, ' ') || RPAD(JOB, 10, '.') AS FORMATTED_RESULT
FROM EMP;
結果
SQL> SELECT
2 LPAD(ENAME, 10, ' ') || RPAD(JOB, 10, '.') AS FORMATTED_RESULT
3 FROM EMP;
FORMATTED_RESULT
-------------------------------------------------------
SMITHCLERK.....
ALLENSALESMAN..
WARDSALESMAN..
JONESMANAGER...
MARTINSALESMAN..
BLAKEMANAGER...
CLARKMANAGER...
SCOTTANALYST...
KINGPRESIDENT.
TURNERSALESMAN..
ADAMSCLERK.....
JAMESCLERK.....
FORDANALYST...
MILLERCLERK.....
14 rows selected.
4. 応用的な活用方法
4.1 数値データのゼロ埋め
商品コードを8桁でゼロ埋めする。
SELECT LPAD(PRODUCT_ID, 8, '0') AS PADDED_ID
FROM PRODUCTS;
4.2 複数文字のパディング
LPADとRPADは複数文字の繰り返しパターンを利用できます。
SELECT RPAD('TEST', 10, 'AB') AS PADDED_STRING
FROM DUAL;
結果:
SQL> SELECT RPAD('TEST', 10, 'AB') AS PADDED_STRING
2 FROM DUAL;
PADDED_STR
----------
TESTABABAB
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
4.3 カラム幅の調整
帳票などで見やすいレポートを作成。
SELECT
LPAD(ENAME, 15, ' ') AS NAME_COLUMN,
RPAD(JOB, 15, ' ') AS JOB_COLUMN
FROM EMP;
結果
SQL> SELECT
2 LPAD(ENAME, 15, ' ') AS NAME_COLUMN,
3 RPAD(JOB, 15, ' ') AS JOB_COLUMN
4 FROM EMP;
NAME_COLUMN JOB_COLUMN
-------------------- --------------------
SMITH CLERK
ALLEN SALESMAN
WARD SALESMAN
JONES MANAGER
MARTIN SALESMAN
BLAKE MANAGER
CLARK MANAGER
SCOTT ANALYST
KING PRESIDENT
TURNER SALESMAN
ADAMS CLERK
JAMES CLERK
FORD ANALYST
MILLER CLERK
14 rows selected.
5. 注意点とベストプラクティス
- NULLの扱い
パディング対象がNULLの場合、結果もNULLとなります。 - 長さの制約
指定した長さを超える文字列は切り捨てられます。 - 実行速度への影響
パディング処理は比較的軽量ですが、大量データに適用する場合はインデックスの有効性を確認してください。
6. 演習問題
問題1: 商品コードの右揃え
以下のコードを実行して、商品コードが右揃えで埋められる結果を確認してください。
SELECT RPAD('1234', 10, '#') AS PADDED_CODE FROM DUAL;
問題2: カスタムフォーマットの適用
従業員名をアスタリスクで左揃え、役職名をハイフンで右揃えする結果を考えてみましょう。
SELECT
LPAD(ENAME, 8, '*') || RPAD(JOB, 8, '-') AS FORMATTED_ROW
FROM EMP;
7. まとめ
LPADとRPADは、文字列整形において非常に強力なツールです。特に、データ出力のフォーマット調整やレポート作成時にその真価を発揮します。本記事を参考に、実務での活用方法をマスターしてください!
次の一歩:
- 他の文字列ファンクション(SUBSTR, INSTR, LENGTHなど)と組み合わせて活用する。
- パディングを使ったフォーマット出力を実際のレポートで試してみる。
[参考]
Oracle Database SQL言語リファレンス 19c
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?




コメント