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

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

SQL Server において、数値をゼロ埋めする(パディング)する方法です。

【スポンサーリンク】

数値をゼロ埋めする

数値をゼロ埋めすることをゼロパディングと言います。パディングと言うのは、埋めるという意味です。

例えば、数値の「123」があって、「5桁までゼロ(ゼロパディング)する」場合、「00123」の状態にすることを言います。

ゼロで無くても、XやYで埋めても、その行為自体はパディングです。「○○埋め」と言った方が伝わりやすいですが、ゼロパディングって言った方がカッコいい(ドヤ顔出来る)ので、みんなパディングと言ってます。

SQL Server ではゼロ埋めする方法はいくつかありますが、主に2つが用いられています。

  • RIGHT関数
  • FORMAT関数

Oracleだと便利な「LPAD」「RPAD」があるのですが、残念ながら SQL Server では使用できません。

【スポンサーリンク】

RIGHT関数でゼロ埋めするサンプル

RIGHT関数でゼロ埋めする場合、とても簡単です。

RIGHT関数の引数に、それぞれ以下を渡してあげます。

  • 第1引数:文字データ or バイナリデータの式
  • 第2引数:正の整数(マイナスはエラー、小数点以下切り捨て)

これだけです。

第1引数に数値以外の値を入れることが出来ますが、暗黙的に varchar・nvarchar に変換できるデータに限ります。
暗黙変換できない場合は、CAST 関数で明示的に変換することで使用可能です。

サンプルで5桁までゼロ埋めするSQLです。

--ゼロ埋めするSQL(RIGHT関数)
SELECT RIGHT('00000' + '10',5)

取り敢えず上記のSQLを実行してみて下さい。「10」という値が「00010」になります。

SQL実行(RIGHT関数によるパディング)

ちなみに、ゼロ以外でも埋まります。

--Xで5桁を埋めるSQL(RIGHT関数)
SELECT RIGHT('XXXXX' + '10',5)

5桁まで「X」で埋めてみます。

SQL実行(RIGHT関数によるパディング、ゼロ以外)

ゼロ以外の値でも埋めることが出来ました。

【スポンサーリンク】

FORMAT関数でゼロ埋めする

純粋に数字だけをパディングの対象にしたい場合は、FORMAT関数の方が簡単です。

関数の引数に、それぞれ以下を渡してあげます。

  • 第1引数:数値(小数点以下は四捨五入扱い)
  • 第2引数:埋めたい値(数値以外を入れると、指定した値で埋まる)

サンプルで5桁までゼロ埋めするSQLです。

SELECT FORMAT(10,'00000');

これだけです。実行すると、

SQL実行(FORMAT関数によるパディング)

ゼロ埋めされています。

ただし、FORMAT関数の場合、第2引数が数値の場合はパディングしてくれますが、第2引数が数値以外の場合はパディングせず、第2引数に指定した値が戻って来ます。

例えば、これ。

SELECT FORMAT(10,'XXXXX');

RIGHT関数だと「XXX10」という結果でしたが、FORMAT関数で実行してみると…

となり、第2引数に指定した値がそのままで戻って来ます。

【スポンサーリンク】

基本的にRIGHT関数で良いと思う

RIGHT関数・FORMAT関数のどちらでもパディング出来ますが、基本的にRIGHT関数で良いと思います(LEFT関数でも同じ話)。

ただし、SQLクエリ、もしくはストアドプロシージャの中に、RIGHT関数・FORMAT関数の両方が混在していることが一番まずいです。

何か意図があって混在させているのであれば問題ありませんが、何も考えずに混在させるのは避けましょう。