SQL SERVER - 数値を文字列に変換する

数値をフォーマットされた文字列に変換する

レポートに表示したりする際など、数値型のデータを SQL Server 側でフォーマットされた文字列に変換したい時ありますよね。

ここではよく使う、数値を文字列に変換する T-SQL のサンプルクエリーを書いておきます。


FORMAT を使って日付をフォーマットして文字列に変換する

数値を文字列に変換するには、SQL Server 2012 から使える FORMAT 関数使うのが簡単で便利です。

シンタックスは FORMAT ( value, format [, culture ] ) で、 数値を変換する場合には value に数値を指定します。

format には、スタンダードフォーマット文字列やカスタムフォーマット文字列を指定することができます。

スタンダードフォーマット文字列には、F: 固定小数点、N: 桁区切り記号つき、C: 通貨などがあり、続けて小数点以下の桁数を 0 ~ 99 までの数字で指定できます。

カスタムフォーマット文字列には、「0: その桁に数字があればその数字が、なければ 0 が表示される」「#: その桁に数字があればその数字が、なければ表示されない」 など、いろいろあります。

どちらで指定しても、元の数値の小数点以下の数字が指定した桁数より多い場合、値は四捨五入されます。

culture の引数は、通貨などカルチャーによって変換の結果が変わってくる時に、カルチャーを指定して変換するのに使われます。

数値を文字列に変換する T-SQL のサンプルクエリー

よく使われる、FORMAT を使った数値を文字列に変換するクエリーは以下の通りです。

SELECT 'N' AS FormatString, FORMAT(156256.799, 'N') AS StringValue UNION ALL -- 156,256.80
SELECT 'N0', FORMAT(156256.799, 'N0') UNION ALL -- 156,257
SELECT 'N1', FORMAT(156256.799, 'N1') UNION ALL -- 156,256.8
SELECT 'N2', FORMAT(156256.799, 'N2') UNION ALL -- 156,256.80

SELECT 'F',  FORMAT(156256.799, 'F')  UNION ALL -- 156256.80
SELECT 'F0', FORMAT(156256.799, 'F0') UNION ALL -- 156257
SELECT 'F1', FORMAT(156256.799, 'F1') UNION ALL -- 156256.8
SELECT 'F2', FORMAT(156256.799, 'F2') UNION ALL -- 156256.80

SELECT 'C: en-US', FORMAT(156256.799, 'C', 'en-US') UNION ALL -- $156,256.80
SELECT 'C: ja-JP', FORMAT(156256.799, 'C', 'ja-JP') UNION ALL -- ¥156,257

SELECT '0',      FORMAT(156256.799, '0')    UNION ALL --156257
SELECT '0.00',   FORMAT(156256.799, '0.00') UNION ALL --156256.80
SELECT '#.##',   FORMAT(156256.799, '#.##') UNION ALL --156256.8
SELECT '#,0.00', FORMAT(156256.799, '#,0.00'); -- 156,256.80

SQL SERVER - 数値を文字列に変換する 1

スタンダードフォーマット文字列の F、N は小数点以下の数字の指定をしないと、デフォルトは 2 になります。

先ほども書きましたが、値は四捨五入されます。 切り上げ・切り捨てしないといけない時は、以下の記事を参考に切り上げ・切り捨てを行ってから、文字列に変換してくださいね。

T-SQL: 切り上げ・切り捨て・四捨五入のページ

© 2010-2024 SQL Server 入門