T-SQL で「数値」と「3桁区切りの文字列」を変換する

SQL Server 2012から format 関数と parse 関数を追加されています。

FORMAT (Transact-SQL)

PARSE (Transact-SQL)

これらの関数を使うと、

  • 数値を3桁区切りの文字列に変換(format)
  • 3桁区切りの文字列を数値に変換(parse)

といったことをクエリだけで行うことができます。

format を使って数値を3桁区切りの文字列に変換

select format(1000, N'#,0');
-- 1,000

parse を使って3桁区切りの文字列を数値に変換

select parse(N'1,000' as decimal);
-- 1000

/*
cast ではエラーになる
select cast(N'1,000' as decimal);
データ型 nvarchar を numeric に変換中にエラーが発生しました。
*/

こういう変換は実際にはプログラム側で処理する方が多いとは思うんですが、クエリだけで何かしたいってときがあれば使えそうですね。