数値を3桁ごとのカンマ区切り表記文字列(9,999)に変換する [SQL Server]

SQLServerでSQLを記述していると、金額などの数値データを金額表記(12,345)にしたい時があります。
取得したデータをプログラム側で書式指定してもいいのですが、SQLで処理した方がプログラムがシンプルになるので、int型などの数値を3桁ごとにカンマ「,」で区切った文字列表記に変換する方法を紹介します。

金額表記への変換方法

数値を3桁カンマ区切りの金額表記へ変換する方法は2つあります。

  1. CONVERT関数とREPLACE関数を使用する方法
  2. FORMAT関数を使用する方法

CONVERT関数とREPLACE関数を使用する方法

CONVERT関数とREPLACE関数を使用して数値を3桁ごとのカンマ区切り表記に変換する場合は、以下の順に処理を行います。

  1. CONVERT関数で数値型の値を金額型(MONEY型)に変換する
  2. CONVERT関数で金額型を3桁カンマ区切りの文字列型に変換する
  3. REPLACE関数で3桁カンマ区切りの文字列の小数以下の部分を削除する

「1.数値型の値を金額型(MONEY型)に変換する」については、もとの値が金額型であれば必要ありません。

上記の処理を順番に適用したSQLを以下に記載します。

「2. CONVERT関数で金額型を文字列型に変換」を行う際にCONVERT関数の第3引数にデータスタイルの「1」を指定することで、3桁ごとにカンマで区切られた文字列に変換できます。

実行結果

CONVERT関数とREPLACE関数を使用して順番に数値を3桁ごとのカンマ区切り表記に変換する

3つの処理を1つにまとめたSQLは次のようになります。

実行結果

CONVERT関数とREPLACE関数を使用して数値を3桁ごとのカンマ区切り表記に変換する

FORMAT関数を使用する方法

FORMAT関数を使用して書式を設定する方法は、CONVERT関数とREPLACE関数を使用する方法よりも簡単です。
FORMAT関数の第1引数に変換元の数値を指定し、第2引数に3桁カンマ区切りの書式を指定します。

FORMAT関数で数値を3桁ごとのカンマ区切りにするSQLは次のようになります。

実行結果

FORMAT関数を使用して数値を3桁ごとのカンマ区切り表記に変換する

FORMAT関数はSQL Server 2012以降でのみ使用可能なので、以前のバージョンのSQLServerではCONVERT関数とREPLACE関数を使用した方法で変換することになりますのでご注意ください。