SELECT cast(cast(Ac.Amount as decimal(18,2)) as varchar)FROM Assessmentsurchargedetails AC
结果是: 5010.00 27.6 100.00 1000.00 10000.00
我只想在点击一千个时添加逗号。
答案 0 :(得分:1)
您可以通过三种方式完成此任务:
以下是一些例子
--Integer Conversion Method
SELECT cast(cast(cast(Amount * 100 as int) / 100.0 as decimal(18,2)) as varchar) FROM Assessmentsurchargedetails AC
或
-- FLOOR Method
SELECT cast(cast(FLOOR(Ac.Amount*100)/100.0 as decimal(18,2)) as varchar) FROM Assessmentsurchargedetails AC
或
-- Substring Method, not the increased precision on the initial decimal cast
select LEFT(cast(cast(Ac.Amount as decimal(20,4)) as varchar), cast(LOG10(Amount) as int)+4) from Assessmentsurchargedetails ac
我决定通过从原始Assessmentsurchargedetails
表中插入大约825万行到另一个表来为每个方法计时。整数转换方法需要18秒才能处理,而另外两个需要16秒。我建议使用子串方法的FLOOR方法,因为在大多数情况下,您不希望将最终结果转换为varchar,并且它是一种更具表现力的方法来解决问题。
关于添加逗号,评论者是正确的 - 使用FORMAT而不首先转换为varchar。在这种情况下,您的最终输出将是:
SELECT FORMAT(cast(FLOOR(Ac.Amount*100)/100.0 as decimal(18,2)), '#,##0.00') FROM Assessmentsurchargedetails AC
答案 1 :(得分:0)
REPLACE(CONVERT(varchar(20), (CAST(SUM(table.value) AS money)), 1), '.00', '')
使用此 REPLACE 和 CONVERT 来获得所需的结果。 ' VARCHAR'不支持逗号。