1

我在英国。我在德国安装了Windows 2008服务器,并安装了SQL Server 2008 R2 Express。 Windows的区域设置被设置为英国。 SQL Server语言设置为英语。当我运行在SQL Server 2008 R2 Express中不存储小数点

sp_helplanguage @@LANGUAGE 

它表明,它被设置为

us_english 

我在数据库中有大量的表有在其中浮动的数据类型。当我使用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 

回答

2

你必须设置你的会话LANGUAGE到所需的设置。

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

+0

谢谢@Remus。这个问题与我通过SMSS直接输入有关,所以设置语言不成问题。作为文本传递的值也不是问题。 – TechyGypo 2012-07-19 15:05:45

相关问题