我在英国。我在德国有一台安装了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注入问题的副作用。