如果小数部分为0,SQL Server将舍入小数数据

时间:2013-03-01 14:04:34

标签: sql-server decimal

在SQL Server存储过程中,我将变量转换为十进制:

CAST( @ToValue as decimal(38,5) )

如果结果是57282.0000(十进制值为0),我希望它显示为57282。

否则我想以57282.48300的形式出现。

我不能使用float,因为如果该值大于8位数字,则显示为指数格式。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您应该在报告软件的格式化选项中执行此操作。

如果出于某种原因无法实现,则以下情况可能有效。

;WITH T(Val) AS
(
SELECT 57282 UNION ALL
SELECT 57282.48300
)
SELECT CASE WHEN 1= 0 THEN NULL  
            WHEN Val = FLOOR(Val) THEN CAST(CAST(Val AS INT)AS SQL_VARIANT) 
            ELSE CAST(Val AS DECIMAL(38,5))
            END
FROM T