XML -элементы присутствуют, несмотря на нулевые значения
-
28-10-2019 - |
Вопрос
У меня довольно большой SELECT ... FOR XML PATH
. Анкет Как вы знаете, по умолчанию XML -элементы, соответствующие полям с нулевым значением, не появляются в результате XML Tree. Это кажется настоящей проблемой для меня, и я хочу, чтобы все элементы появились, будь то значение или нет.
Есть ли способ достичь этого без окружения каждого поля ISNULL(...,'')
один за другим (более 50 полей в моем выборе!) И без изменения FOR XML PATH
в FOR XML ELEMENTS
использовать XSINIL
переключить (что, к сожалению, доступно только с ELEMENTS
) ?
Я подозреваю, что эти 2 не устойчивые решения, кстати, приведут к различным выходам: <fieldname></fieldname>
а также <fieldname/>
соответственно. Если это возможно, я бы предпочел первый, но я все равно хочу прочитать ваши драгоценные предложения.
Заранее спасибо ! :-)
Решение
без изменения пути для 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>