質問

私はかなり大きいです 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 xsinilfor 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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top