【问题标题】:SQL Server round the decimal data if decimal part is 0如果小数部分为 0,则 SQL Server 舍入小数数据
【发布时间】:2013-03-01 14:04:34
【问题描述】:

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

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

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

否则,例如,我想显示为 57282.48300。

我不能使用浮点数,因为如果值大于 8 位数字,它会显示为指数格式。

我该如何解决这个问题?

【问题讨论】:

  • 为什么不在应用程序的表示层中对其进行格式化?
  • 一定要在你的应用层做这个。

标签: sql-server decimal


【解决方案1】:

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

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

;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            

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 2023-01-04
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多