2010-12-15 209 views
2

我試圖用MsSQL將NVARCHAR值轉換爲貨幣值。將NVARCHAR轉換爲貨幣值

我知道我可以使用類似:

SELECT CONVERT(money, ValueColumn) FROM SomeTable 

但問題是,當我有一個值4352,50,我調用轉換方法,該值變爲435250,00

什麼我錯過了嗎?我也試過CONVERT(金錢,ValueColumn,2)但沒有任何成功。

在此先感謝!

+0

請告訴你在哪個區域工作。對於我住在一個小數分隔的土地上。選擇顯示錯誤的所有數字,即NLS修改。對我來說,這完全沒問題。我會期待的。作爲小數點分隔符(我是程序員而不是商人),結果用小數點顯示。爲了防止這些NLS干擾,我使用select cast(CONVERT(money,'1.1')as varchar)來獲取內部表示 – 2010-12-15 09:39:25

回答

2

SELECT CONVERT(money, REPLACE('4352,50', ',', '.'))

+0

謝謝就是了:D – CyberK 2010-12-15 09:18:24

1

嘗試

DECLARE @ValueColumn NVARCHAR(20) 

SELECT @ValueColumn = '4352.50' 

SELECT CONVERT(money, @ValueColumn) 

VS

DECLARE @ValueColumn NVARCHAR(20) 

SELECT @ValueColumn = '4352,50' 

SELECT CONVERT(money, @ValueColumn) 

逗號沒有被intepreted作爲小數點。

+0

好的,但是如何在不對代碼進行硬編碼的情況下在查詢中使用它?因爲它是一個有160.000行的表格...... – CyberK 2010-12-15 09:14:54

+1

您必須先在列上使用替換。像* REPLACE(@ValueColumn,',','。')* – 2010-12-15 09:16:56

0

這是一個黑客位,但如果你的數據的其餘部分是相同的格式

numbers , numbers ,

Declare @Value nvarchar(50) 

Set @Value = '4352,50,' 

Select Convert(Money, Substring(@Value, 0, Charindex(',',@value)) + '.' + Substring(@Value, Charindex(',',@Value)+1, 2)) 
2

當你在工作中, - 原樣小數點分隔符使用:

SELECT CONVERT(money, REPLACE(ValueColumn, ',', '.')) 
0

SELECT TRY_PARSE('12.345,67'AS Money US'pt-BR')