2017-10-11 56 views
0
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時不能捨入數值?

我只想補充,當它擊中了一千逗號分隔。

+2

請分配採樣數據和預期的結果 – zarruq

+0

我已經編輯我的問題,先生 –

+0

請。添加一些示例數據,如@zarruq所述 –

回答

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秒。然而,我建議通過Substring方法使用FLOOR方法,因爲在大多數情況下,您不希望將最終結果轉換爲varchar,並且它是解決問題的更富有表現力的方法。

關於添加逗號,評論者是正確的 - 使用FORMAT,而不是先轉換爲varchar。在這種情況下,你的最終輸出將是:

SELECT FORMAT(cast(FLOOR(Ac.Amount*100)/100.0 as decimal(18,2)), '#,##0.00') FROM Assessmentsurchargedetails AC 
0
REPLACE(CONVERT(varchar(20), (CAST(SUM(table.value) AS money)), 1), '.00', '') 

使用本更換CONVERT來得到想要的結果。 'varchar'不支持逗號。

相關問題