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

相關問題