1

私はかなり大きいSELECT ... FOR XML PATHです。ご存知のように、デフォルトでは、null値を持つフィールドに対応するxml要素は結果のxmlツリーに表示されません。それは私にとって本当の問題のようであり、値がnullであるかどうかに関係なく、常にすべての要素を表示させたいと思っています。

各フィールドを1つずつ囲まずにISNULL(...,'')(私のSELECTでは50を超えるフィールド!) 、スイッチを使用するようにに変更FOR XML PATHせずに(残念ながら、でのみ使用可能)、それを実現する方法はありますか?FOR XML ELEMENTSXSINILELEMENTS

ちなみに、これら2つの完全に統計化されていないソリューションでは、それぞれ異なる出力が得られると思い<fieldname></fieldname>ます<fieldname/>。可能であれば最初のものをお勧めしますが、とにかくあなたの貴重な提案を読みたいと思っています。

前もって感謝します !:-)

4

1 に答える 1

0

XSINILスイッチを使用するためにFORXMLPATHをFORXMLELEMENTSに変更せずに

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>
于 2011-06-15T09:42:57.253 に答える