Oracle LPAD, RPADファンクション解説 ~基礎から応用まで~

Oracle Master Silver

LPADとRPADファンクションは、Oracleデータベースで文字列を特定の長さに整形する際に非常に便利なツールです。本記事では、初心者にも分かりやすい構成で基礎的な使い方から応用例までを紹介します。さらに、SCOTTスキーマを用いた実例やベストプラクティスもご紹介します。

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;

結果

EMPNOPADDED_EMPNO
736907369
749907499
752107521

3.2 RPADの例:役職名を整形

JOB列の値を10文字の文字列に整形し、余白部分を*で埋めます。

SELECT JOB, RPAD(JOB, 10, '*') AS PADDED_JOB
FROM EMP;

結果

JOBPADDED_JOB
CLERKCLERK*****
SALESMANSALESMAN**
MANAGERMANAGER***

3.3 データの視覚的整形

従業員名(ENAME)を左揃えで10文字幅、役職名(JOB)を右揃えで10文字幅に整形して連結します。

SELECT 
LPAD(ENAME, 10, ' ') || RPAD(JOB, 10, '.') AS FORMATTED_RESULT
FROM EMP;

結果

FORMATTED_RESULT
SMITHCLERK…..
ALLENSALESMAN..
WARDSALESMAN…

4. 応用的な活用方法

4.1 数値データのゼロ埋め

商品コードを8桁でゼロ埋めする。

SELECT LPAD(PRODUCT_ID, 8, '0') AS PADDED_ID
FROM PRODUCTS;

4.2 複数文字のパディング

LPADRPADは複数文字の繰り返しパターンを利用できます。

SELECT RPAD('TEST', 10, 'AB') AS PADDED_STRING
FROM DUAL;

結果: TESTABABAB


4.3 カラム幅の調整

帳票などで見やすいレポートを作成。

SELECT 
LPAD(ENAME, 15, ' ') AS NAME_COLUMN,
RPAD(JOB, 15, ' ') AS JOB_COLUMN
FROM EMP;

結果

NAME_COLUMNJOB_COLUMN
SMITHCLERK
ALLENSALESMAN
WARDSALESMAN

5. 注意点とベストプラクティス

  1. NULLの扱い
    パディング対象がNULLの場合、結果もNULLとなります。
  2. 長さの制約
    指定した長さを超える文字列は切り捨てられます。
  3. 実行速度への影響
    パディング処理は比較的軽量ですが、大量データに適用する場合はインデックスの有効性を確認してください。

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

コメント

タイトルとURLをコピーしました