2016-06-21 12 views
0

Ich versuche, die Dezimalstellen von ganzen Zahlen zu behalten, wenn Werte aus einer XQuery sql: variable -Funktion abgerufen werden.XQuery - So aktivieren Sie sql: Variable, um Dezimalstellen zu behalten

Beispielcode:

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

Ergebnis:

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

Gewünschtes Ergebnis:

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

Was die Änderungen muss ich machen um das gewünschte Ergebnis zu bekommen?

Danke.

Antwort

0

Die eingebaute Funktion fn: Format-Nummer hilft Ihnen, Ihre Zahlen in der Art und Weise Formatierungen, die Sie sich wünschen:

format-number(123, "000.00") 

die gibt:

replace value of (/Test/SubTest/text())[1] 
with format-number(sql:variable("@variableName"), "000.00") 
+0

Hallo @Gushlain, ich bekomme 'Es gibt keine Funktion ..' Fehler, wenn ich das oben versuchen. – codeandfootball

+0

Hallo juniordeveloper87, Sie müssen möglicherweise das Präfix fn: vor der Formatnummer explizit hinzufügen, abhängig von Ihrer Konfiguration. –

+0

Ich fürchte, dass der SQL-Server (wenn Sie das verwenden) nicht die neueste XQuery-Funktionsbibliothek implementiert: https://msdn.microsoft.com/en-us/library/ms189254(v=sql.110) .aspx –

1

Sie müssen decimal zu nvarchar konvertieren vor der Verwendung 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 
Verwandte Themen