SQLで左0埋めなどのパディングを行う [SQLServer, MySQL]

SQLでパディングを行う方法を紹介します。

パディングを行うと固定長のコード値を持つマスタテーブルのコードの桁数を左0埋めで合わせたり、特定の文字数に合わせるためにスペースで埋めたりすることができます。

左0埋めした値を取得する

先ず、よく使う数値を指定した桁数になるまで左に0を埋める処理(ゼロパディング)を例にパディングを行う方法です。
左0埋めを行うには、次の3つの処理を行います。

  1. 0詰めを行う値(数値)を文字列に変換する
  2. 最大桁数(文字数)分の「0」繰り返した文字列を左に付ける
  3. 右から最大桁数(文字数)分を切り取る

0詰めを行う値(数値)を文字列に変換する

文字列への変換はCONVERT関数またはCAST関数を使用します。

数値を文字列に変換する例をCONVERT関数およびCAST関数を用いて行う例を以下に記載します。

実行結果

数値を文字列に変換

最大桁数(文字数)分の「0」繰り返した文字列を左に付ける

最大桁数(文字数)分の「0」繰り返した文字列を左に付けるのは簡単です。単純に「’00000’」という文字列を左に付けるだけです。

文字列に変換した11の左に「0」を5桁付ける例を以下に記載します。

実行結果

最大桁数(文字数)分の「0」を繰り返した文字列を左に付ける
上記の例ではCONVERT関数を使用していますがCAST関数を使用しても結果は同じです。

右から最大桁数(文字数)分を切り取る

右から最大桁数分の文字列を切り取るにはRIGHT関数を使用します。

最大桁数(文字数)分の「0」繰り返した文字列を左に付けた値を、右から5桁分切り取る例を以下に記載します。

実行結果

右から最大桁数分を切り取る

0以外の文字を埋める

次に、左を半角スペースで埋める例です。
半角スペースでのパディングも0でパディングする場合とやり方は同じです。
以下に左に半角スペースを8桁埋める例を示します。

実行結果

8桁左半角スペース埋め

文字の繰り返し部分を関数にする

文字の繰り返しの部分(5桁左0埋めなら「’00000’」の部分)は関数を使用して指定することができます。
文字列の繰り返しにはREPLICATE関数を使います。
SQLServerのREPLICATE関数を使って5桁左0埋めをする例を以下に記載します。

実行結果は「’00000’」を左に付けた場合と同様に「00011」になります。

REPLICATE関数はSQLServerの関数なので、MySQLで行う場合にはREPLICATE関数の代わりにREPEAT関数を使います。
以下はMySQLでの取得例です。

SQLServerでFORMAT関数を使って左0埋めする

SQLServerで数値を左0埋めやする場合はFORMAT関数が使えます。
FORMAT関数の第1引数に数値を指定して、第2引数に書式を指定します。
以下に数値を5桁に左0埋めした文字列値を取得する例を記載します。

実行結果

FORMAT関数を使って5桁左0埋め