SELECT cast(cast(Ac.Amount as decimal(18,2)) as varchar)FROM Assessmentsurchargedetails AC
結果是: 5010.00 27.6 100.00 1000.00 10000.00添加或將其轉換爲Money時不能捨入數值?
我只想補充,當它擊中了一千逗號分隔。
SELECT cast(cast(Ac.Amount as decimal(18,2)) as varchar)FROM Assessmentsurchargedetails AC
結果是: 5010.00 27.6 100.00 1000.00 10000.00添加或將其轉換爲Money時不能捨入數值?
我只想補充,當它擊中了一千逗號分隔。
您可以通過三種方式來完成它:
下面是一些例子
--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秒。然而,我建議通過Substring方法使用FLOOR方法,因爲在大多數情況下,您不希望將最終結果轉換爲varchar,並且它是解決問題的更富有表現力的方法。
關於添加逗號,評論者是正確的 - 使用FORMAT,而不是先轉換爲varchar。在這種情況下,你的最終輸出將是:
SELECT FORMAT(cast(FLOOR(Ac.Amount*100)/100.0 as decimal(18,2)), '#,##0.00') FROM Assessmentsurchargedetails AC
REPLACE(CONVERT(varchar(20), (CAST(SUM(table.value) AS money)), 1), '.00', '')
使用本更換和CONVERT來得到想要的結果。 'varchar'不支持逗號。
請分配採樣數據和預期的結果 – zarruq
我已經編輯我的問題,先生 –
請。添加一些示例數據,如@zarruq所述 –