控制小数点的位数

yubofighting 2012-07-22 09:47:01
有一列值,可能是整数,可能是1位小数,也可能是多为小数,如果为多为小数,则保留两位小数,其余不变。
如:
test
1
1.5
1.345
1.34

则输出为
test
1
1.5
1.35
1.34

有好办法吗?

PS:数字整体位数不确定
...全文
177 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
以学习为目的 2012-07-23
  • 打赏
  • 举报
回复

--用ROUND ( numeric_expression , length)函数
select convert(float,round(num,2)) from tab
白天的猫头鹰 2012-07-23
  • 打赏
  • 举报
回复
select convert(decimal(18,2),value) from tableTest
白天的猫头鹰 2012-07-23
  • 打赏
  • 举报
回复
输出时, 字段convert为decimal(18,2)就好了
xiaojiaoduo 2012-07-23
  • 打赏
  • 举报
回复
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

这种好像不行哦,楼主要四舍五入!你的好像没有!!
天-笑 2012-07-23
  • 打赏
  • 举报
回复


select convert(float,round(x,2)) from t

zjl8008 2012-07-23
  • 打赏
  • 举报
回复

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
yubofighting 2012-07-22
  • 打赏
  • 举报
回复

这种可以哈。。

select
case when
CHARINDEX('.',cast(reverse(x) as varchar(50)),1)>3
then
CAST(x as decimal(9,2))
else x end
from t
yubofighting 2012-07-22
  • 打赏
  • 举报
回复
硬写的话很麻烦,还要判断进位,有无好的方法?

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

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧