1

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

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
4

1 回答 1

2

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

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

于 2012-07-19T14:46:54.597 回答