2017-05-30 59 views
1

如果我运行此查询在SSMS:十进制和真实值在SSMS与不同的小数点符号呈现

select convert(decimal(18,2),1.1), convert(real,1.1) 

我会得到两个不同的小数点,“1.10”和“1,1”。

对于我当前的区域/区域设置,我期望,可用作这两种情况下的小数点。

为什么SQL Server(或SQL Server Management Studio?)以不同的方式格式化小数和实数? 有没有什么办法可以配置这些东西?

当然,在我的代码中,我得到了正确的数据类型,并且可以显示正确的小数点,但是在使用实数和小数数据类型运行表时,我得到了小数点的混合使用,所以它有点乏味粘贴到Excel中。 在早期版本的SSMS /查询分析器中,这不是问题,但现在它是?

+1

只是不要在数据库本身中使用解析。使用正确的字段类型并将数字和日期作为强类型参数传递。 –

+0

我没有解析,我运行了一个查询,并期望输出与其他软件兼容,因此将结果粘贴到Excel中应该可以正常工作,而无需对结果使用格式化函数。 – neslekkiM

+0

数值本身没有“局部小数点”,它们只是二进制值。数字文字总是使用'.'。本地化仅适用于将数字格式化为显示字符串时,解析用户提供的字符串或解析文本文件 –

回答

5

这是一个记录的错误。

查看this的原始错误报告,以及this的跟进。它看起来不像MS要解决这个问题(很快)。

我很惊讶你看到SSMS版本之间的区别。

+0

AH!,我更新设法找到那些使用Google搜索。 – neslekkiM

+0

我可能记得错了,或者我之前使用过的语言环境给出了相同的结果,每隔一段时间我重新安装我的电脑/安装办公室,我得到不同的设置:),看着sqlserver 2000这工作正常,但错误是在ssms 2008也。 – neslekkiM

+0

显然,如果你使用美国设置,你会得到预期的结果。所以我会想象那是问题。 – HoneyBadger

相关问题