2017-11-07 2 views
-1

varchar値を金額にキャストするときに失敗する関数があります。スクリプトにisnullチェックを追加して、問題がnullキャストではないことを確認しました。SQLサーバー2008関数にmoney varcharへのキャストが機能しない

指定された値が問題かどうかを発見するこのやり方にもかかわらず、私はそれを解決できませんでした。

機能スクリプトは次のとおりです。

CREATE FUNCTION f_casting 
(@t VARCHAR(2), 
@q VARCHAR(17), 
@Q1 VARCHAR(17), 
@Q2 VARCHAR(17), 
@Q3 VARCHAR(17) 
) 
RETURNS MONEY 
AS 
    BEGIN 
     DECLARE @Qf MONEY; 
     SET @Qf = -1; 
     IF @t = '2' 
      BEGIN 
       DECLARE @MAX MONEY; 
       SET @MAX = 0; 
       IF ISNUMERIC(@Qmed) = 1 
        SET @Qmed = CAST(isnull(STUFF(@Qmed, 10, 0, '.'), 0) AS MONEY); 
       SET @Qf = @Qmed; 
     END; 
     RETURN ROUND(@Qf, 2); 
    END; 

機能で、または金銭データ型のキャストに問題がある場合、誰もが知っていますか? @ QFデータ型をvarcharに変更した場合、それは機能します。なぜあなたは小さな鋳​​造用functionに行く

+0

WHTウルが達成しようと? –

+0

@ YogeshSharmaはお金にvarchar値をキャストします – Maik

+0

私たちは読者を気にしません。 「失敗する」とはどういう意味ですか?あなたはこのデータにどのようなデータを入れていますか?その情報がなければ、我々はただ推測している –

答えて

0

が、これはまた、小さなsqlスクリプト使用することによって行うことができる

declare @value varchar(max) 

set @value = '10' 

select CAST(@value as money) 

結果:

10.00 
+0

こんにちは @をお金の形式に変換してみてください。 SET @Qf = CONVERT(MONEY、COALESCE(@Qmed、0)); これが助けてくれることを願っています! – Mohamad

+0

@モハマド '@Qfお金、@Qmed varchar(最大) を設定する@Qf = CONVERT(MONEY、COALESCE(@Qmed、0)); を選択します。@ Qf ' –

関連する問題