T-SQLを使用してSQLServerで整数を10進値に変換するための3つのオプションを次に示します。
CAST()
機能
CAST()
関数は、あるデータ型の式を別のデータ型に変換します:
SELECT CAST(275 AS DECIMAL(5, 2));
結果:
275.00
この例では、整数(275
)を変換しました )5
の精度で10進値に変換します および2
小数位。
10進数と数値は同義語であり、同じ意味で使用できます。したがって、同じ結果を達成するために、次のように例を調整できます。
SELECT CAST(275 AS NUMERIC(5, 2));
結果:
275.00
必要に応じて精度を調整することを忘れないでください:
SELECT CAST(18301275 AS DECIMAL(10, 2));
結果:
18301275.00
精度の引数が十分に大きくない場合、エラーが発生します:
SELECT CAST(18301275 AS DECIMAL(9, 2));
結果:
Msg 8115, Level 16, State 8, Line 1 Arithmetic overflow error converting int to data type numeric.
CONVERT()
機能
CONVERT()
関数はCAST()
と同じことを行います 、わずかに異なる構文を除いて:
SELECT CONVERT(DECIMAL(5, 2), 275);
結果:
275.00
算術演算子を使用する
もう1つのオプションは、乗算演算子などの算術演算子を使用することです。
SELECT 275 * 1.00;
結果:
275.00
この例では、整数に1.00
を掛けます。 。
SQL Serverでは、演算子が異なるデータ型の式を組み合わせる場合は常に、優先順位の低いデータ型が最初に優先順位の高いデータ型に変換されます。次に、この演算は、優先順位の高い引数のデータ型を返します。
SQL Serverでは、10進数の方が整数よりも優先されます。
1.00を掛けても、整数部分は変更されません。単純に小数に変換し、小数部分を追加しています。
優先順位の高いデータ型のリストについては、SQLServerのデータ型の優先順位を参照してください。