XML -Elemente trotz der Nullwerte vorhanden
-
28-10-2019 - |
Frage
Ich habe eine ziemlich große SELECT ... FOR XML PATH
. Wie Sie wissen, erscheinen standardmäßig XML -Elemente, die Feldern mit einem Nullwert entsprechen, nicht im Ergebnis XML -Baum. Es scheint ein echtes Problem für mich zu sein und ich möchte immer alle Elemente angezeigt haben, ob der Wert null ist oder nicht.
Gibt es eine Möglichkeit, dies zu erreichen, ohne jedes Feld durch zu umgeben? ISNULL(...,'')
eins nach dem anderen (mehr als 50 Felder in meinem Auswählen!) Und ohne das zu ändern FOR XML PATH
hinein FOR XML ELEMENTS
Um das zu verwenden XSINIL
Schalter (was leider nur mit erhältlich ist ELEMENTS
) ?
Ich vermute, dass diese 2 nicht entsprechenden Lösungen übrigens zu unterschiedlichen Ausgaben führen würden: <fieldname></fieldname>
und <fieldname/>
beziehungsweise. Wenn möglich, würde ich den ersten bevorzugen, aber ich bin trotzdem gespannt darauf, Ihre wertvollen Vorschläge zu lesen.
Danke im Voraus ! :-)
Lösung
ohne den für XML -Pfad für XML -Elemente zu ändern, um den Xsinil -Schalter zu verwenden
Sie können verwenden elements xsinil
mit for xml path
.
declare @T table (ID int identity, Name varchar(50))
insert into @T values ('Name1')
insert into @T values (null)
insert into @T values ('Name2')
select
ID,
Name
from @T
for xml path('item'), root('root'), elements xsinil
Ergebnis:
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<item>
<ID>1</ID>
<Name>Name1</Name>
</item>
<item>
<ID>2</ID>
<Name xsi:nil="true" />
</item>
<item>
<ID>3</ID>
<Name>Name2</Name>
</item>
</root>