0

我做了一個SQL Server函數,它將varchar轉換爲小數,但它將刪除數字,然後返回一個整數。將varchar轉換爲十進制將數字刪除

Create FUNCTION [dbo].[ToMoney] 
(
@Amount nvarchar 
) 
RETURNS decimal(14,2) 
AS 
BEGIN 
-- Declare the return variable here 
DECLARE @finalAmount as decimal(14,2);   

IF Isnumeric(isnull(@amount, 0)) = 1 
    SET @finalAmount = CAST(@amount as decimal(14,2)) 
ELSE 
    SET @finalAmount = 0 

-- Return the result of the function 
RETURN @finalAmount; 
END 

當我運行以下查詢:

SELECT dbo.ToMoney('123.45') as result 

結果是 '1.00'

我希望它返回123.45爲十進制。我究竟做錯了什麼?

回答

3

問題是你的函數定義。沒有長度的nvarchar()的使用一般默認長度爲1

嘗試這種情況:

Create FUNCTION [dbo].[ToMoney] 
(
@Amount nvarchar(255) 
) 
RETURNS decimal(14,2) 

作爲一個說明:當它的缺省值爲1的長度,它走的是字符串中的第一個字符。這就是爲什麼你的價值是1.00

+0

這樣做!謝謝。 –