我在英国。我在德国安装了一台安装了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
答案 0 :(得分:2)
您必须将会话中的LANGUAGE设置为所需的设置。
但是,尽管您没有显示任何C#代码,但事实上您看到了格式问题,这意味着您在SQL命令中将值作为 text 传递。您应该使用@variables
代替。这样可以避免SQL注入问题。