2012-05-31 42 views
3

來自Oracle背景我無法相信SQL Server如何給我這麼瑣碎的關注這麼難。SQL Server CAST/CONVERT到數字文化特定

我只想將varchar列中的數字解析爲數字列。事情是,數字不是美國風格,而是德國風格的格式。這意味着,小數點和數字組分隔符是互換的。

例子:

1.767,13 equals one thousand and seven hundred ... 

我那種通過每一個MSDN文章看了。 CAST不接受任何附加參數。 CONVERT可以採取風格這雖然似乎只適用於日期/時間和金錢轉換。此外,我發現TRY_PARSE需要文化參數,但似乎尚未在2008版本中可用。

我想出了一個kludge解決方案,但那不可能!

cast(replace(replace([TOTALVALUE],'.',''), ',','.') as numeric(20,2)) 

首先將數字組分隔符刪除,然後將小數點標記從逗號更改爲點。它的工作原理,但它是健壯的等。

感謝您的意見和解答!

+1

http://stackoverflow.com/questions/545575/how-can-i-convert-text-with-a-localized-number-format-into-a-number-in-ms-sql-se –

+1

'TRY_PARSE'是一個新的SQL Server ** 2012 **功能 –

回答

2

抱歉,讓但沒錯,

cast(replace(replace([TOTALVALUE],'.',''), ',','.') as numeric(20,2)) 

是做它的方式。

0

遺憾,這不會幫你還,但SQL Server 2012中有一個文化感知PARSE功能

0

的完整性 - here是MSDN文檔解析鏈接,W /代碼示例和文化字符串表,即「EN-US」美國英語,「去-DE」德語等..