硬写的话很麻烦,还要判断进位,有无好的方法?select case when CHARINDEX('.',cast(reverse(x) as varchar(50)),1)>3 then LEFT(CAST(x as varchar(50)),CHARINDEX('.',cast(x as varchar(50)),1)+2) else x end from t
这种可以哈。。select case when CHARINDEX('.',cast(reverse(x) as varchar(50)),1)>3 then CAST(x as decimal(9,2)) else x end from t
select case when round(x,0)=x then cast(round(x,0) as varchar(10)) else cast(round(x,2) as varchar(10)) end from t
select convert(float,round(x,2)) from t
select case when CHARINDEX('.',cast(reverse(x) as varchar(50)),1)>3 then LEFT(CAST(x as varchar(50)),CHARINDEX('.',cast(x as varchar(50)),1)+2) else x end from t这种好像不行哦,楼主要四舍五入!你的好像没有!!
输出时, 字段convert为decimal(18,2)就好了
select convert(decimal(18,2),value) from tableTest
--用ROUND ( numeric_expression , length)函数 select convert(float,round(num,2)) from tab
case when
CHARINDEX('.',cast(reverse(x) as varchar(50)),1)>3
then
LEFT(CAST(x as varchar(50)),CHARINDEX('.',cast(x as varchar(50)),1)+2)
else x end
from t
这种可以哈。。select
case when
CHARINDEX('.',cast(reverse(x) as varchar(50)),1)>3
then
CAST(x as decimal(9,2))
else x end
from t
select
case when
round(x,0)=x then
cast(round(x,0) as varchar(10)) else cast(round(x,2) as varchar(10)) end
from t
case when
CHARINDEX('.',cast(reverse(x) as varchar(50)),1)>3
then
LEFT(CAST(x as varchar(50)),CHARINDEX('.',cast(x as varchar(50)),1)+2)
else x end
from t这种好像不行哦,楼主要四舍五入!你的好像没有!!
--用ROUND ( numeric_expression , length)函数
select convert(float,round(num,2)) from tab