我試圖用MsSQL將NVARCHAR值轉換爲貨幣值。將NVARCHAR轉換爲貨幣值
我知道我可以使用類似:
SELECT CONVERT(money, ValueColumn) FROM SomeTable
但問題是,當我有一個值4352,50,我調用轉換方法,該值變爲435250,00
什麼我錯過了嗎?我也試過CONVERT(金錢,ValueColumn,2)但沒有任何成功。
在此先感謝!
我試圖用MsSQL將NVARCHAR值轉換爲貨幣值。將NVARCHAR轉換爲貨幣值
我知道我可以使用類似:
SELECT CONVERT(money, ValueColumn) FROM SomeTable
但問題是,當我有一個值4352,50,我調用轉換方法,該值變爲435250,00
什麼我錯過了嗎?我也試過CONVERT(金錢,ValueColumn,2)但沒有任何成功。
在此先感謝!
嘗試
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作爲小數點。
好的,但是如何在不對代碼進行硬編碼的情況下在查詢中使用它?因爲它是一個有160.000行的表格...... – CyberK 2010-12-15 09:14:54
您必須先在列上使用替換。像* REPLACE(@ValueColumn,',','。')* – 2010-12-15 09:16:56
這是一個黑客位,但如果你的數據的其餘部分是相同的格式
如 numbers , numbers ,
Declare @Value nvarchar(50)
Set @Value = '4352,50,'
Select Convert(Money, Substring(@Value, 0, Charindex(',',@value)) + '.' + Substring(@Value, Charindex(',',@Value)+1, 2))
當你在工作中, - 原樣小數點分隔符使用:
SELECT CONVERT(money, REPLACE(ValueColumn, ',', '.'))
SELECT TRY_PARSE('12.345,67'AS Money US'pt-BR')
請告訴你在哪個區域工作。對於我住在一個小數分隔的土地上。選擇顯示錯誤的所有數字,即NLS修改。對我來說,這完全沒問題。我會期待的。作爲小數點分隔符(我是程序員而不是商人),結果用小數點顯示。爲了防止這些NLS干擾,我使用select cast(CONVERT(money,'1.1')as varchar)來獲取內部表示 – 2010-12-15 09:39:25