0

少し前に私はこの質問をしました: TSQL forxmlxml-tagを一度だけ

これで、空のタグと自己終了タグがxmlに表示されないという問題が発生しました。

ここここで考えられる回避策を見つけましたが、期待どおりに機能しません。

また、空の可能性のある各タグに「$$」を書き込もうとしました。最後に、「$$」を含むすべてのタグを次のように削除しようとしました。

SET @persons.modify('delete (//$$)')

しかし、このアプローチも機能しません。

XQueryを使用して空のタグと自己終了タグを削除したり、TSQL for xml内に表示されないようにするにはどうすればよいですか?

4

1 に答える 1

1

クエリの記述方法によって異なりますが、通常、null値は結果のXMLに含まれないため、空の値を省略したい場合はnullif、空ではなくnull値を取得するために使用できます。

declare @Person table
(
  Name varchar(20)
)

insert into @Person values ('Person1')
insert into @Person values ('Person2')
insert into @Person values ('')
insert into @Person values (null)

select '2012' as period,
       (
        select nullif(Person.Name, '') as 'users/person'
        from @Person as Person
        for xml path('') , type
       )
for xml path(''), root('company')

結果:

<company>
  <period>2012</period>
  <users>
    <person>Person1</person>
  </users>
  <users>
    <person>Person2</person>
  </users>
</company>
于 2012-10-03T10:21:39.477 に答える