DECLARE @n DECIMAL(18,3) SET @n=1.2SELECT @n,CAST(@n AS FLOAT) /* --------------------------------------- ---------------------- 1.200 1.2(1 行受影响) */
DECLARE @a TABLE(a DECIMAL(18,3)) INSERT @a SELECT 2 UNION ALL SELECT 2.501 UNION ALL SELECT 0SELECT a [Init], CAST(a AS FLOAT) [Float], CAST(CAST(a AS FLOAT) as VARCHAR) [Float_Char] FROM @a --result /* Init Float Float_Char -------------------- ----------------------------------------------------- ------------------------------ 2.000 2.0 2 2.501 2.5009999999999999 2.501 .000 0.0 0(所影响的行数为 3 行) */
DECLARE @a TABLE(a DECIMAL(18,3)) INSERT @a SELECT 2 UNION ALL SELECT 2.501 UNION ALL SELECT 0 UNION ALL SELECT 2.50 select case when a-cast(a as int)>0 then cast(a as float) else cast(a as int)end a from @a /* a ---------------------- 2 2.501 0 2.5(4 行受影响) */
SET @n=1.2SELECT @n,CAST(@n AS FLOAT)
/*
--------------------------------------- ----------------------
1.200 1.2(1 行受影响)
*/
INSERT @a SELECT 2
UNION ALL SELECT 2.501
UNION ALL SELECT 0SELECT a [Init],
CAST(a AS FLOAT) [Float],
CAST(CAST(a AS FLOAT) as VARCHAR) [Float_Char]
FROM @a --result
/*
Init Float Float_Char
-------------------- ----------------------------------------------------- ------------------------------
2.000 2.0 2
2.501 2.5009999999999999 2.501
.000 0.0 0(所影响的行数为 3 行)
*/
INSERT @a SELECT 2
UNION ALL SELECT 2.501
UNION ALL SELECT 0
UNION ALL SELECT 2.50
select case when a-cast(a as int)>0 then cast(a as float)
else cast(a as int)end a
from @a
/*
a
----------------------
2
2.501
0
2.5(4 行受影响)
*/