SQL Server - ゼロ埋め(ゼロパディング)する(旧版)

SQL Serverで数値をゼロパディングするには、FORMAT関数を使用します。FORMAT関数が使用できない環境ではRIGHT関数を使用する方法があります。

FORMAT関数でゼロ埋め(ゼロパディング)する

--NULLはNULLのまま返す
SELECT FORMAT(<列名> 'D<桁数>') FROM <テーブル名>

--NULLをゼロにする
SELECT FORMAT(ISNULL(<列名>, 0), 'D<桁数>') FROM <テーブル名>

--NULLを空文字列にする
SELECT ISNULL(FORMAT(<列名>, 'D<桁数>'), '') FROM <テーブル名>

サンプルSQL

次のサンプルは FORMAT関数 を使用し、Point列 を 5桁にゼロ埋めしています。
--5桁にゼロパディング
SELECT
       [Point]                            元の数値
      ,FORMAT([Point], 'D5')              NULLはNULLのまま返す
      ,FORMAT(ISNULL([Point], 0), 'D5')   NULLをゼロにする
      ,ISNULL(FORMAT([Point], 'D5'), '')  NULLを空文字列にする
  FROM [SampleTable]
実行結果
実行結果

RIGHT関数でゼロ埋め(ゼロパディング)する

サンプル中の '00000' は、ゼロ埋めしたい桁数に合わせてください。例えば、8桁にしたい場合は '00000000' です。
--NULLはNULLのまま返す
SELECT RIGHT('00000' + CAST(<列名> AS VARCHAR), <桁数>) FROM <テーブル名>

--NULLをゼロにする
SELECT RIGHT('00000' + ISNULL(CAST(<列名> AS VARCHAR), ''), <桁数>) FROM <テーブル名>

--NULLを空文字列にする
SELECT ISNULL(RIGHT('00000' + CAST(<列名> AS VARCHAR), <桁数>), '') FROM <テーブル名>

解説

  1. CAST関数 で 数値を 文字列に変換します。

    123 -> '123'

  2. 文字列 の 先頭に、桁数分の '0' を結合します。

    '123' -> '00000123'

  3. RIGHT 関数を使用し、右側から 桁数分、文字列を切り出します。

    '00000123' -> '00123'

サンプルSQL

次のサンプルは CAST関数 と RIGHT関数を使用し、Point列 を 5桁にゼロ埋めしています。
--5桁にゼロパディング
SELECT
       [Point]                                                   元の数値
      ,RIGHT('00000' + CAST([Point] AS VARCHAR), 5)              NULLはNULLのまま返す
      ,RIGHT('00000' + ISNULL(CAST([Point] AS VARCHAR), ''), 5)  NULLをゼロにする
      ,ISNULL(RIGHT('00000' + CAST([Point] AS VARCHAR), 5), '')  NULLを空文字列にする
  FROM [SampleTable]
実行結果
実行結果

参考資料

検証環境