MS SQL数值数据类型和转换与删除零

时间:2016-01-26 07:45:49

标签: sql sql-server sql-server-2005

create table test_int
    (
     num bigint
    )

insert into test_int (num)
values (4096);

我的任务是计算4096/1024/1024并得到小数答案。好吧,int不会在dot之后存储值,所以:

select CAST (num as decimal)/1024/1024 AS decimal, ROUND ((CAST (num as decimal)/1024/1024),4,1) AS numeric  from test_int

第一个是纯粹的攻击,第二个是四舍五入:

decimal         numeric
0.00390625000 0.00390000000

任务是在值之后删除空零。

select convert(decimal(25,5), 4096/1024/1024 ,0) 

返回0.00000。

那我怎么能得到0.0039而不是0.00390000000? 提前感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:1)

将结果投射到FLOAT

<强>查询

SELECT
CAST
(
    CAST(num as decimal)/1024/1024 
    AS FLOAT
) AS decimal, 
CAST
(
    ROUND((CAST (num as decimal)/1024/1024),4,1) 
    AS FLOAT
) AS numeric  
from test_int;

<强>结果

+---------------+---------------+
| decimal       |   numeric     |
+---------------+---------------+
| 0.00390625    | 0.0039        |
+---------------+---------------+

SQL Fiddle

答案 1 :(得分:1)

这个可以使用,但是如果我没弄错的话,这只适用于2008版及以上版本。

{{1}}