2011-10-04 44 views
1

我試圖在一個十進制字段中存儲一個存儲爲varchar的值。SQL Server 2008 varchar到十進制的結果是:「將數據類型varchar轉換爲數字時出錯」

以下示例全部導致:「將數據類型varchar轉換爲數字時出錯」。

我在這裏失蹤了什麼?

SELECT CONVERT(decimal(11,2), '6.999,50') 
SELECT CONVERT(decimal(11, 2), '6.999,50') 
SELECT CAST('6.999,50' AS decimal)/100.0 
SELECT CAST((CAST('6.999,50' AS decimal)/100000) AS decimal(17,5)) 

回答

2

您錯過了6.999,50不是有效小數的事實。一定不能有逗號和小數點的小數點?它應該是什麼數字?

假設您的語言環境指定。爲分組,並作爲小數點分隔符: 要刪除分組數字:

SELECT CONVERT(decimal(11,2), REPLACE('6.999,50', '.', '')) 

將產生6999,50爲十進制

+0

結果應該是格式:decimal(11,2)。 所以我想我需要一個函數來過濾分組數字? – HerbalMart

+0

我使用替換示例編輯了我的答案以刪除'。'。字符。 –

0

我懷疑它的本地設置。您的區域設置使用逗號作爲小數點和句點作爲分隔符。你的sql服務器可能被設置爲默認的美國英語,這是另一種方式,週期爲小數點,逗號爲分隔符。

+0

不管語言環境我不認爲SQL將應付轉換包含分組字符的varchar。 –

相關問題