Вот вопрос по XQuerying в SQL (SQL Server 2008)
Изначально у меня есть XML, который мне нужно вывести несколько иначе, для справки:
declare @XMLNODE table (id int identity, doc xml)
insert @XMLNODE (doc) values (
'
<Root>
<Elements>
<Items>
<OldItem>
<ID>1</ID>
<Show Pointer="yes" />
<Display Pointer="Display">
<Detail1>some Details</Detail1>
</DisplayDetails>
</OldItem>
</Items>
</Elements>
</Root>'
)
SELECT a.value('(ID)[1]','int') as ID,
a.value('(Show/@Pointer)[1]', 'varchar(5)') AS ShowItem,
a.value('Display[1]/@Pointer[1]="Display"', 'varchar(10)') as DisplayDetails, -- Set to 'true' or 'false'
a.value('DisplayDetails[1][@Pointer[1]="Display"]/Detail1[1]', 'varchar(max)') as Detail1
FROM @XMLNODE t
cross apply
t.doc.nodes('//OldItem') x(a)
FOR XML PATH ('Items'),
ROOT('Elements')
Итак, теперь у меня есть такой XML:
<Elements>
<Items>
<ID>1</ID>
<ShowItem>yes</ShowItem>
<DisplayDetails>true</DisplayDetails>
<Detail1>some Details</Detail1>
</Items>
</Elements>
Хотите добавить некоторые, изменить это значение на 1 или нет, основываясь на том, было ли оно истинным / да и т. Д.
т.е.. желательно:
<Elements>
<Items>
<ID>1</ID>
<ShowItem>1</ShowItem>
<DisplayDetails>1</DisplayDetails>
<Detail1>some Details</Detail1>
</Items>
</Elements>
Кроме того, если <DisplayDetails>false</DisplayDetails>
Я просто хочу обновить его до <DisplayDetails />
.
Есть ли способ напрямую сравнить входные данные в запросе (например, да или нет) и установить его в 1 или 0 вместо true или false? Я использую .query для использования этих значений и при необходимости добавляю дополнительную информацию.