不在SQL Server 2008 R2 Express中存储小数点

时间:2012-07-19 14:40:53

标签: sql-server localization windows-server-2008 sqldatatypes

我在英国。我在德国安装了一台安装了SQL Server 2008 R2 Express的Windows 2008服务器。 Windows的区域设置设置为英国。 SQL Server语言设置为英语。我跑的时候

sp_helplanguage @@LANGUAGE

它表明它已设置为

us_english

我在数据库中有许多表,其中包含float数据类型。当我使用SSMS更改其中一个浮点值时,如果我输入

1234.1234

首先显示为

1234,1234

然后当我单击该行以保存它时,它显示为

12341234

ASP.NET应用程序,通过存储过程提供数据并被放入双(VB.NET),实现了

String.Format("{0:#0.0000}", dMyDouble)

这呈现为

12341234,0000

毋庸置疑,在我的本地服务器(所有基于英国的)上,所有数据库输入的数字都显示为我所期望的(1234.1234)和.NET格式,如我所料(1234.1234)。我知道我的欧洲朋友在英国使用了不同的符号,但我需要输出英国格式 - 更重要的是数据库中的浮动格式!

.NET没有正确格式化的事实,我想这纯粹与数字不存储准确性这一事实有关。

我也通过使用十进制列(18,4)玩了一下,我得到了类似的结果。当我使用点(。)键入1234.1234时,它将替换为逗号(,)。保存行时,它将另存为

12341234.0000

1 个答案:

答案 0 :(得分:2)

您必须将会话中的LANGUAGE设置为所需的设置。

但是,尽管您没有显示任何C#代码,但事实上您看到了格式问题,这意味着您在SQL命令中将值作为 text 传递。您应该使用@variables代替。这样可以避免SQL注入问题。