Oracleで取得結果をゼロ埋めする方法です。ゼロ以外の数値・文字でも埋めることが出来ます。
数値をゼロ埋めする
数値をゼロ埋めすることをゼロパディングと言います。例えば、数値の「123」があって、「7桁までゼロパディングする」と言うのは「0000123」の状態にすることを言います。「〇〇コード」みたいなカラムはゼロ埋めされていることが多いですね。
ゼロに限らず、特定の桁数まで任意の値で埋めることをパディングと言います。
で、ゼロ埋めする方法ですが、Oracleでは3つの方法でゼロ埋めすることが出来ます。
- LPAD
- RPAD
- TO_CHAR
この3つです。それぞれ使い方を解説します。
LPAD
LPADを使用すると、ゼロ埋めしたい値の前(左側)にゼロ埋めすることが出来ます。まずは基本となる構文から。
LPAD('対象の文字',桁数,'埋めたい文字');
引数は次の様になっています。
- 第1引数:対象の文字
- 第2引数:桁数(左側に何桁まで埋めたいか)
- 第3引数:埋めたい文字(左側に何を埋めたいか)
LPADのサンプルのSQLを用意したので、実際に試してみましょう。
SELECT LPAD('123',7,'0') FROM DUAL;
左側がゼロで埋まりましたね。ゼロに限らず、文字でも埋めることが出来ます。
SELECT LPAD('123',7,'X') FROM DUAL;
「X」で埋めてみましょう。これを実行してみます。
「123」の左側が「X」で埋まりましたね。
RPAD
続いてRPADです。こちらもLPADと同じですが、右側を埋める関数です。
RPAD('対象の文字',桁数,'埋めたい文字');
引数は次の様になっています。
- 第1引数:対象の文字
- 第2引数:桁数(右側に何桁まで埋めたいか)
- 第3引数:埋めたい文字(右側に何を埋めたいか)
RPADのサンプルのSQLを用意したので、実際に試してみましょう。
SELECT RPAD('123',7,'0') FROM DUAL;
右側がゼロで埋まりました。
TO_CHARを使用したパディング
先ほど紹介したLPADは、TO_CHARでも同じ結果を取得することが可能です。
SELECT TO_CHAR('123','FM0000000') FROM DUAL;
TO_CHARを使用してパディングする時の引数は以下です。
- 第1引数:対象の文字
- 第2引数:FM+埋めたい文字を桁数分(左側に何を埋めたいか)
【注意】第2引数は、’FM’を先頭に記述しないと、先頭に半角スペースが入ります。
実際に実行してみましょう。
LPADと同じ結果になりました。ただし、これが出来るのは数値だけです。文字で埋めようとすると、環境によってはエラーになります。「FM00000…」という書式フォーマットが有効なのでゼロ埋めすることが可能です。
編集後記
TO_CHARもオマケで紹介しましたが、基本的にLPADかRPADを使用する方が良いですね。どうしても「TO_CHARでパディングしないといけないんだ!(使命感)」という場合だけ使って下さい。
参考サイト
.