Oracle SQLでゼロ(0)やスペース埋めする方法 LPAD・RPAD・TO_CHAR
Oracle SQLでゼロ(0)やスペース埋めする方法です。
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を実行してみると・・・、
おお、左側にゼロとスペースが埋められたー^^
ちなみに挿入文字が全角で、指定桁数に至れない場合には、半角スペースが左側に補填されます。逆に指定文字列桁数の方が指定桁数よりも大きい場合には右側が切り捨てられます(LPAD、RPAD共通)。
SELECT
'あいう' STR
,11 LEN
,'え' PAD
,LPAD('あいう',11,'え') PADSTR
FROM DUAL
先頭に半角スペースが挿入されている
また、指定文字列がNULLの場合は結果はNULLです。
SELECT
NULL STR
,8 LEN
,'0' PAD
,LPAD(NULL,8,'0') ZEROPAD
,LPAD(NULL,8) SPACEPAD
FROM DUAL
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を実行してみると・・・、
おお、右側にゼロとスペースが埋められたー^^
全角や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 SQLでゼロ(0)やスペース埋めする方法を紹介しました。
文字列や数値をゼロ(0)やスペースで埋めたいっていうと、固定長ファイルの作成に使うくらいしか思いつかないけど、最近は固定長ファイルの作成なんて少なくなってきたかと思いきや、レガシーシステムでは相変わらず現役だし。
ここでの情報が役立つとうれしいですね。
おつかれさまでした。