为了演示,我有一个值,我希望在转换为varchar
之前只显示两位小数select '£' + cast(round(amount,2) as varchar (10))
这样可以正常工作,并将结果显示为300英镑。但是,“金额”也需要除以100作为查询的一部分。当我将其添加到代码中时......
select '£' + cast(round(amount/100,2) as varchar (10))
..显示为£3.000000。有没有办法删除额外的0,所以在小数点后只显示两个?
答案 0 :(得分:1)
只需使用format()
:
select '£' + format(amount, 2)
这也增加了逗号,这似乎是可取的。
如果您不想使用逗号,请不要使用round()
,转换为decimal
类型:
select '£' + cast(cast(round(amount, 2) as decimal(10, 2)) as varchar(10))
round()
确实更改了值,但它并没有改变存储机制。 cast( . .. as varchar)
不知道 - 或关心 - 结果中有多少重要值。
编辑(对于SQL Server):
您可以使用format()
功能代替str()
:
select '£' + ltrim(str(amount, 10, 2))
或转换前转换为小数的最后一种方法。
答案 1 :(得分:0)
金额列的数据类型是什么?将圆形部分投入浮动
select '£' + cast(round(cast(8375.8734/100 as float),2) as varchar (100));
结果是
£83.76
这也应该在前端应用程序中完成,而不是在sql
中完成