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



我在英国。我在德国有一台安装了SQL server 2008 R2 Express的Windows 2008服务器。Windows的区域设置设置为英国。SQL server语言设置为英语。当我运行时

sp_helplanguage @@LANGUAGE

它表明它被设置为

us_english

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

1234.1234

首先它显示为

1234,1234

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

12341234

ASP.NET应用程序通过一个存储过程提供数据,并将其放入一个double(VB.NET)中,它执行

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

此渲染为

12341234,0000

不用说,在我的本地服务器(全部基于英国)上,所有数据库输入的数字都会按照我的预期显示(1234.1234),.NET会按照我预期的格式对它们进行格式化(1234.1334)。我知道我的欧洲朋友在英国使用的符号与我们不同,但我需要输出英国格式,更重要的是数据库中的浮点值!

事实上,.NET没有正确格式化,我想这纯粹是因为数字没有存储准确性。

我也使用了小数列(18,4),得到了类似的结果。当我使用点(.)键入1234.1234时,它会替换为逗号(,)。保存行时,它将保存为

12341234.0000

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

但是,尽管您没有显示任何C#代码,而且您看到了格式问题,这意味着您在SQL命令中以文本的形式传递值。您应该使用@variables。这将有避免SQL注入问题的副作用。

最新更新