只有在大于0的情况下,Sql Server才会显示小数?

时间:2012-12-07 09:43:01

标签: sql sql-server database sql-server-2008 tsql

我有这个选择:select isnull(Pricea,0)-isnull(Priceb,0) as Differences 列的格式为十进制(12,4)。 我的问题是:只有当它们大于0时我才能以某种方式返回小数? 如果结果将是例如4.0000,这似乎令人困惑,所以我只想在小于0的情况下显示小数。这可能吗?

2 个答案:

答案 0 :(得分:2)

当ceiling(Num)= floor(Num)时,数字是整数

select case when ceiling(Num) = floor(Num) 
       then      CONVERT(varchar, CAST(Num as decimal))
       else      CONVERT(varchar, Num) 
       end

答案 1 :(得分:1)

这就是MangementStudio中为数据类型显示的那种。 只需调整显示类型,您就可以执行类似

的操作
Declare @a table  (a decimal(12,4),b decimal(12,4))
insert into @a Values(12.45,10.45)
insert into @a Values(12.45,10.4512)
insert into @a Values(12.4512,10.4500)

Select Cast(Case when a-b<>Floor(a-b) then Cast(a-b as float) else  a-b end as Varchar(30)) as Diff
from @a