ヌル値にもかかわらず存在するXML要素
-
28-10-2019 - |
質問
私はかなり大きいです SELECT ... FOR XML PATH
. 。ご存知のように、デフォルトでは、ヌル値を持つフィールドに対応するXML要素は、結果XMLツリーに表示されません。それは私にとって本当の問題であるように思われ、私は値がヌルであるかどうかにかかわらず、常にすべての要素を表示したいと思っています。
各フィールドを囲むことなくそれを達成する方法はありますか ISNULL(...,'')
1つずつ(私の選択では50を超えるフィールド!)、変更せずに FOR XML PATH
の中へ FOR XML ELEMENTS
使用するには XSINIL
Switch(残念ながらのみ利用可能です ELEMENTS
) ?
ちなみに、これらの2つの不安定性のないソリューションが異なる出力をもたらすと思います。 <fieldname></fieldname>
と <fieldname/>
それぞれ。可能であれば、私は最初のものを望みますが、とにかくあなたの貴重な提案を読みたいと思っています。
前もって感謝します ! :-)
解決
XML要素のXMLパスをXML要素に変更することなく、XSINILスイッチを使用する
使用できます elements xsinil
と 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
結果:
<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>
所属していません StackOverflow