3

来自 Oracle 的背景让我无法相信 SQL Server 如何让我为这样一个微不足道的问题而烦恼。

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

例子:

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

我浏览了每一篇 MSDN 文章。CAST不接受任何附加参数。CONVERT可以采用一种似乎只适用于日期/时间和货币转换的样式。此外,我发现TRY_PARSE它需要一个文化参数,但在 2008 版本中似乎还没有。

我想出了一个杂乱无章的解决方案,但那不可能!

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

首先删除数字组分隔符,然后将小数点从逗号更改为点。它有效,但它是否强大等。

感谢您的评论和回答!

4

3 回答 3

2

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

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

是这样做的方法。

于 2012-05-31T09:10:46.017 回答
2

为了完整性 -这里是 PARSE 的 MSDN 文档的链接,带有代码示例和文化字符串表,即美国英语的“en-US”,德语的“de-DE”等...

于 2012-06-17T19:30:32.120 回答
0

抱歉,这对您没有帮助,但 SQL Server 2012 具有文化感知PARSE功能

于 2012-05-31T09:03:51.137 回答