2016-06-21 1 views
0

XQueryのsql:variable関数から値を取得するときに、整数の小数点以下の桁を保持しようとしています。XQuery - 小数点以下を保持するためにsql:variableを有効にする方法

サンプルコード:

DECLARE @variableName DECIMAL(16,2) = 123.00; 
SET @XML.modify('replace value of (/Test/SubTest/text())[1] with sql:variable("@variableName")'); 

結果:

<Test> 
    <SubTest> 123 </SubTest> 
</Test> 

望ましい結果:

<Test> 
    <SubTest> 123.00 </SubTest> 
</Test> 

私は望ましい結果を得るために必要な変更は何ですか?

ありがとうございました。

答えて

0

組み込み関数fn:フォーマット番号はあなたが望む方法であなたの数値をフォーマットすることができます:

format-number(123, "000.00") 

与える:

使用する decimal nvarcharする前に変換する必要があり
replace value of (/Test/SubTest/text())[1] 
with format-number(sql:variable("@variableName"), "000.00") 
+0

こんにちは@Ghuslain、上記を試してみると「機能がありません」というエラーが表示されます。 – codeandfootball

+0

こんにちはjuniordeveloper87では、構成に応じて、format-numberの前にfn:接頭辞を明示的に追加する必要があります。 –

+0

SQLサーバー(使用している場合)が最新のXQuery関数ライブラリを実装していないことに恐れています:https://msdn.microsoft.com/en-us/library/ms189254(v=sql.110) .aspx –

1

XQuery

DECLARE @xml xml = '<Test>A</Test>', @variableName DECIMAL(16,2) = 123.00, @str nvarchar(max) 
SET @str = Convert(nvarchar(max), @variableName) 
SET @XML.modify('replace value of (/Test/text())[1] with sql:variable("@str")'); 
SELECT @Xml, @str 
関連する問題