oracle中的to_char() 在sqlserver2008中如何使用? 如下面的语句
Selectb.unit_name,a.amount1,a.amount2,a.amount3,a.amount,to_char((a.Rate1*100),'fm999...
Select b.unit_name ,a.amount1,a.amount2,a.amount3,a.amount ,
to_char((a.Rate1 * 100),'fm9999999990.00') || '%' Rate1,to_char((a.Rate2 * 100),'fm9999999990.00') || '%' Rate2,to_char((a.Rate3 * 100)),
to_char((a.Rate * 100),'fm9999999990.00') || '%' Rate
From rv_tmp_report_sideways a,rv_unit b Where a.unit_id = b.unit_id
如何修改to_char() 在sqlserver2008下能运行 展开
to_char((a.Rate1 * 100),'fm9999999990.00') || '%' Rate1,to_char((a.Rate2 * 100),'fm9999999990.00') || '%' Rate2,to_char((a.Rate3 * 100)),
to_char((a.Rate * 100),'fm9999999990.00') || '%' Rate
From rv_tmp_report_sideways a,rv_unit b Where a.unit_id = b.unit_id
如何修改to_char() 在sqlserver2008下能运行 展开
5个回答
展开全部
用Round() + Cast()就可以:
Select b.unit_name ,a.amount1,a.amount2,a.amount3,a.amount ,
cast(Round((a.Rate1 * 100),2) as varchar(13))+'%' Rate1,
cast(Round((a.Rate2 * 100),2) as varchar(13))+'%' Rate2,
cast(Round((a.Rate3 * 100),2) as varchar(13)),
cast((Round((a.Rate * 100),2) as varchar(13)) +'%' Rate
From rv_tmp_report_sideways a,rv_unit b Where a.unit_id = b.unit_id
Select b.unit_name ,a.amount1,a.amount2,a.amount3,a.amount ,
cast(Round((a.Rate1 * 100),2) as varchar(13))+'%' Rate1,
cast(Round((a.Rate2 * 100),2) as varchar(13))+'%' Rate2,
cast(Round((a.Rate3 * 100),2) as varchar(13)),
cast((Round((a.Rate * 100),2) as varchar(13)) +'%' Rate
From rv_tmp_report_sideways a,rv_unit b Where a.unit_id = b.unit_id
展开全部
若能保证a.Rate可以强行转换为数字(就是说里面保存的只有数字)的话
可以使用 Convert(decimal(18,2),a.Rate1 * 100) 来转换成格式为保留小数点后2位数字,总长度最高18位的数字.
若是a.Rate还含有小数的话 修改为
Convert(decimal(18,2),a.Rate1 * 100.00)
即可执行
可以使用 Convert(decimal(18,2),a.Rate1 * 100) 来转换成格式为保留小数点后2位数字,总长度最高18位的数字.
若是a.Rate还含有小数的话 修改为
Convert(decimal(18,2),a.Rate1 * 100.00)
即可执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
to_char fm的作用是去空格,可以忽视,990.00 sqlserver里不记得有没这个用法,如果没有就改成999.00好了,无非就是 0.23显示成.23而已
追问
SQL SERVER2008中好像用的不是TO_CHAR()方法
追答
sqlserver: str(number,10,3) 取number10位,小数点后面3位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用cast来替代试试,
类似:select cast('79.3916690681319'asdecimal(18,13))
类似:select cast('79.3916690681319'asdecimal(18,13))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询