SQL Server 2005でXML構造体を作成する必要があります(C-フレーズを借用する必要があります)。これを行うために、私はすべての値をvarcharに変更します。問題は、私がこれらの値のUSEを作成したいときに、私は10進数に変換する必要があります。'null' varcharを10進数に変換する
だから、私のXMLコードは次のようになります。VALがnullの場合
set @result = @result + <VAL>' + coalesce(cast(@val as varchar(20)), '-.11111') + '</VAL>'
この方法は、私は特別な小数を返すと、私はその小数をチェックすることができます。パフォーマンス以来
case when cast(InvestmentReturn.fn_getSTRUCT(...args...).value('results[1]/VAL[1]', 'varchar(40)')as decimal(10,5)) = -.11111
:これを行うことの欠点は、私が値を使用する場合、私は、私はそれがこのような0 に値が等しい変換かどうかを確認する必要がもう一方の端にCOALESCEを使用することができないということです私はパフォーマンスを向上させる方法の1つが、ネストされたcase文を使用する代わりに合体を使用し、特別な 'null'同等のものと等しいかどうかをチェックすることが考えられました。
どのような考えですか?
も、私は(小数(10,5)として「NULL」)が選択キャストを見るには、私に与える:
Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to numeric.