Oracle SQLでゼロ(0)やスペース埋めする方法 LPAD・RPAD・TO_CHAR

Oracle SQLでゼロ(0)やスペース埋めする方法です。

Oracle SQLでゼロ(0)やスペース埋めする方法 LPAD・RPAD・TO_CHAR

Oracle SQLでのゼロやスペース埋めするにはいくつか方法があります。一言でゼロやスペース埋めたいといっても、文字列の先頭を埋めたい場合、文字列の後ろをそろえたい場合、数値をゼロ埋めしたい場合など、状況によって様々です。

これらの多くは「LPAD」「RPAD」「TO_CHAR」の関数を使うことで解決できます。

ここでは Oracle SQLで「LPAD」「RPAD」「TO_CHAR」関数を使って、ゼロ(0)やスペース埋めする方法 を紹介します。


LPAD関数で文字列をゼロやスペースで埋める

まずはLPAD関数を使ってゼロ埋めしてみます。LPADは指定文字列の左側に、指定の桁数になるように、挿入文字列を連結して返してくれます。

LPAD ( 指定文字列 , 指定桁数 [, 挿入文字列] )

挿入文字列の指定がない場合、半角スペースが挿入されます。

文字列ABCをゼロ埋めとスペース埋めして8桁の文字列にしてみます。

SELECT
 'ABC' STR
,8 LEN
,'0' PAD
,LPAD('ABC',8,'0') ZEROPAD
,LPAD('ABC',8) SPACEPAD
FROM DUAL

SQLを実行してみると・・・、

Oracle 文字列ABCをゼロ埋めとスペース埋めして8桁の文字列にする

おお、左側にゼロとスペースが埋められたー^^

ちなみに挿入文字が全角で、指定桁数に至れない場合には、半角スペースが左側に補填されます。逆に指定文字列桁数の方が指定桁数よりも大きい場合には右側が切り捨てられます(LPAD、RPAD共通)。

SELECT
 'あいう' STR
,11 LEN
,'え' PAD
,LPAD('あいう',11,'え') PADSTR
FROM DUAL

Oracle LPAD/RPAD 挿入文字が全角

先頭に半角スペースが挿入されている

また、指定文字列がNULLの場合は結果はNULLです。

SELECT
 NULL STR
,8 LEN
,'0' PAD
,LPAD(NULL,8,'0') ZEROPAD
,LPAD(NULL,8) SPACEPAD
FROM DUAL

Oracle 指定文字列がNULLの場合は結果はNULL

RPAD関数で文字列をゼロやスペースで埋める

次にRPAD関数を使ってゼロ埋めしてみます。RPADは指定文字列の右側に、指定の桁数になるように、挿入文字列を連結して返してくれる関数です。

RPAD ( 指定文字列 , 指定桁数 [, 挿入文字列] )

挿入文字列の指定がない場合、半角スペースが挿入されます。

文字列ABCをゼロ埋めとスペース埋めして8桁の文字列にしてみます。

SELECT
 'ABC' STR
,8 LEN
,'0' PAD
,LPAD('ABC',8,'0') ZEROPAD
,LPAD('ABC',8) SPACEPAD
FROM DUAL

SQLを実行してみると・・・、

Oracle 文字列ABCをゼロ埋め

おお、右側にゼロとスペースが埋められたー^^

全角やNULLの扱いはLPADと同じなので割愛します。

TO_CHAR関数で数値をゼロで埋める

最後にTO_CHAR関数を使って数値をゼロ埋めします。TO_CHARは数値や日付を指定した書式で文字列に変換して返してる関数です。

TO_CHAR ( 数値や日付 [, 文字列書式 [, 言語パラメータ]] )

数値123をゼロ埋めして8桁の文字列にしてみます。

SELECT
 123 NUM
,'FM00000000' FORMAT
,TO_CHAR(123,'FM00000000') ZEROPAD
FROM DUAL

SQLを実行してみると・・・、

Oracle TO_CHAR関数で数値をゼロで埋める

おお、左側にゼロが埋められたー^^

まとめ

Oracle SQLでゼロ(0)やスペース埋めする方法を紹介しました。

文字列や数値をゼロ(0)やスペースで埋めたいっていうと、固定長ファイルの作成に使うくらいしか思いつかないけど、最近は固定長ファイルの作成なんて少なくなってきたかと思いきや、レガシーシステムでは相変わらず現役だし。

ここでの情報が役立つとうれしいですね。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。