SQL Server强制转换/转换为特定于数字区域性的

SQL Server强制转换/转换为特定于数字区域性的,sql,sql-server,sql-server-2008,internationalization,Sql,Sql Server,Sql Server 2008,Internationalization,来自甲骨文公司的背景,我无法相信SQL Server会给我如此困难的时间来处理如此琐碎的问题 我只想将varchar列中的数字解析为数字列。问题是,数字不是美式的,而是德式的。也就是说,小数点和数字组分隔符是互换的 例如: 1.767,13 equals one thousand and seven hundred ... 我浏览了MSDN的每一篇文章强制转换不接受任何其他参数转换可以采用一种似乎只适用于日期/时间和货币转换的样式。此外,我还发现了TRY_PARSE,它接受了一个区域性参数,但

来自甲骨文公司的背景,我无法相信SQL Server会给我如此困难的时间来处理如此琐碎的问题

我只想将
varchar
列中的数字解析为数字列。问题是,数字不是美式的,而是德式的。也就是说,小数点和数字组分隔符是互换的

例如:

1.767,13 equals one thousand and seven hundred ...
我浏览了MSDN的每一篇文章<代码>强制转换不接受任何其他参数<代码>转换可以采用一种似乎只适用于日期/时间和货币转换的样式。此外,我还发现了
TRY_PARSE
,它接受了一个区域性参数,但似乎在2008版本中还不可用

我想出了一个乱七八糟的解决办法,但那不可能

cast(replace(replace([TOTALVALUE],'.',''), ',','.') as numeric(20,2))
首先删除数字组分隔符,然后将小数点从逗号更改为点。它可以工作,但它是否健壮等等


谢谢你的评论和回答

很抱歉,这还不能帮助您,但是SQL Server 2012具有区域性感知的
解析功能

很抱歉让您失望,但是是的

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

是实现这一点的方法。

为了完整性-是指向MSDN文档的链接,用于解析,带有代码示例和区域性字符串表,即“en-US”表示美国英语,“de-de”表示德语等。

TRY_PARSE
是SQL Server 2012的一项新功能