0

varchar を 10 進数に変換する SQL Server 関数を作成しましたが、数字を削除してから整数を返します。

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 を 10 進数で返したい。私は何を間違っていますか?

4

1 に答える 1

3

問題は関数定義です。長さなしで を使用するとnvarchar()、通常、デフォルトの長さは になり1ます。

これを試して:

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

注: デフォルトの長さが 1 の場合、文字列の最初の文字を使用しています。そのため、 の値を取得しています1.00

于 2013-08-18T22:37:48.340 に答える