Sql server 如果小数部分为0,SQL Server将小数数据四舍五入

Sql server 如果小数部分为0,SQL Server将小数数据四舍五入,sql-server,decimal,Sql Server,Decimal,在SQL Server存储过程中,我将一个变量强制转换为十进制: CAST( @ToValue as decimal(38,5) ) 如果结果是57282.0000(十进制值为0),我希望它显示为57282 否则,我希望显示为57282.48300,例如 我不能使用float,因为如果该值大于8位数字,它将显示为指数格式 如何解决此问题?您应该在报表软件的格式选项中执行此操作 如果由于某种原因这是不可能的,那么下面的方法可能会起作用 ;WITH T(Val) AS ( SELECT 57282

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

CAST( @ToValue as decimal(38,5) )
如果结果是57282.0000(十进制值为0),我希望它显示为57282

否则,我希望显示为57282.48300,例如

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


如何解决此问题?

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

如果由于某种原因这是不可能的,那么下面的方法可能会起作用

;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            

为什么不在应用程序的表示层中格式化它呢?在应用程序层中一定要这样做。