2008-11-20 58 views
1

我收到一些存儲過程的參數。這些參數是NVARCHAR的。SQLServer 2005 - 更改NVarChar中的字符

我有一個問題,當我需要將這些值中的一部分轉換爲FLOATS時,因爲它們正在被接收。

@ VALUE1 NVARCHAR(100)

DECLARE @ChangedValue SET @ChangedValue = CAST(@值1 AS FLOAT)

例如@值1 =「0.001」

給了我一個問題,因爲它希望「0.001」

我不能改變輸入的格式,但我可以採用某種改變它的SQL服務器端?通過將所有「,」更改爲「」。代替?

最好的問候,肯恩

回答

3

你可以使用@VALUE1 = REPLACE(@VALUE1, ',', '.')

這似乎一個可怕的事情做雖然!

0

由於米奇說這聽起來不錯,它會好得多,它所提供的參數是float類型的第一位。他給了你現在解決你的問題的解決方案,但是他指出你將來可能會遇到一些麻煩。

我假設程序被某些應用程序代碼調用,我懷疑這些數字是用戶輸入。如果是這種情況,那麼轉換應該發生在應用程序級別上,因爲這將處理區域設置,並且這是控制用戶輸入格式的唯一地方。

0

我對您的數據並不熟悉,但請確保您沒有任何以逗號(例如1,000)有效的值。使用替換將其更改爲1.000會大幅增加涉及的實際數量。

我會修復用戶界面,以便無效的數字不能放在字段中。我還會在數據庫中的表中對數據進行約束,要求數據在清除數據後需要在一定範圍內或有效數字內。這種方式不好的數據不能進入現場開始。