記事内に広告が含まれています。

【Oracle】数値をゼロ埋めする(パディング)

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;

f:id:neko_britannia:20201005205045j:plain

左側がゼロで埋まりましたね。ゼロに限らず、文字でも埋めることが出来ます。

SELECT LPAD('123',7,'X') FROM DUAL;

「X」で埋めてみましょう。これを実行してみます。

f:id:neko_britannia:20201005205236j:plain

「123」の左側が「X」で埋まりましたね。

【スポンサーリンク】

RPAD

続いてRPADです。こちらもLPADと同じですが、右側を埋める関数です。

RPAD('対象の文字',桁数,'埋めたい文字');

引数は次の様になっています。

  • 第1引数:対象の文字
  • 第2引数:桁数(右側に何桁まで埋めたいか)
  • 第3引数:埋めたい文字(右側に何を埋めたいか)

RPADのサンプルのSQLを用意したので、実際に試してみましょう。

SELECT RPAD('123',7,'0') FROM DUAL;

f:id:neko_britannia:20201005205713j:plain

右側がゼロで埋まりました。

【スポンサーリンク】

TO_CHARを使用したパディング

先ほど紹介したLPADは、TO_CHARでも同じ結果を取得することが可能です。

SELECT TO_CHAR('123','FM0000000') FROM DUAL;

TO_CHARを使用してパディングする時の引数は以下です。

  • 第1引数:対象の文字
  • 第2引数:FM+埋めたい文字を桁数分(左側に何を埋めたいか)

【注意】第2引数は、’FM’を先頭に記述しないと、先頭に半角スペースが入ります。

実際に実行してみましょう。

f:id:neko_britannia:20201005210444j:plain

LPADと同じ結果になりました。ただし、これが出来るのは数値だけです。文字で埋めようとすると、環境によってはエラーになります。「FM00000…」という書式フォーマットが有効なのでゼロ埋めすることが可能です。

【スポンサーリンク】

編集後記

TO_CHARもオマケで紹介しましたが、基本的にLPADかRPADを使用する方が良いですね。どうしても「TO_CHARでパディングしないといけないんだ!(使命感)」という場合だけ使って下さい。

【スポンサーリンク】

参考サイト

LPAD
TO_CHAR(数値)
書式モデル

.