T-SQLで整数同士の除算結果を浮動小数点数にする代替方法
T-SQLで整数同士の除算結果を浮動小数点数にする方法
T-SQLでは、整数同士の除算を行うとデフォルトでは整数型が返されます。そのため、小数点以下の値を保持したい場合は、明示的に浮動小数点数型に変換する必要があります。
方法1: CAST関数を使用する
SELECT CAST(integer1 AS float) / CAST(integer2 AS float) AS result;
CAST
関数を使用して、両方の整数値を浮動小数点数型に変換してから除算を行います。
方法2: 除算の片方のオペランドを浮動小数点数型に変換する
SELECT integer1 / CAST(integer2 AS float) AS result;
- 除算の片方のオペランドのみを浮動小数点数型に変換しても、結果が浮動小数点数型になります。
例
DECLARE @a INT = 7;
DECLARE @b INT = 3;
-- 方法1
SELECT CAST(@a AS float) / CAST(@b AS float) AS result;
-- 方法2
SELECT @a / CAST(@b AS float) AS result;
DECLARE @a INT = 7;
DECLARE @b INT = 3;
-- 方法1: CAST関数を使用する
SELECT CAST(@a AS float) / CAST(@b AS float) AS result;
-- 方法2: 除算の片方のオペランドを浮動小数点数型に変換する
SELECT @a / CAST(@b AS float) AS result;
解説
変数の宣言:
CAST(@a AS float)
:@a
の値を浮動小数点数型に変換します。- 除算の結果は浮動小数点数型になります。
SELECT 1.0 * integer1 / integer2 AS result;
- 除算の両方のオペランドに
1.0
を掛け算することで、両方のオペランドを浮動小数点数型に変換し、結果も浮動小数点数型になります。
SELECT integer1 / integer2 * 1.0 AS result;
SELECT integer1 / integer2 * 1.0 AS result;
DECLARE @a INT = 7;
DECLARE @b INT = 3;
-- 方法3
SELECT 1.0 * @a / @b AS result;
-- 方法4
SELECT @a / @b * 1.0 AS result;
-- 方法5
SELECT @a / @b * 1.0 AS result;
sql-server sql-server-2008 division