У меня есть XML, такой как:
<History>
<Event></Event>
<Event></Event>
</History>
И мне нужно добавить атрибут порядка сортировки для каждого события, чтобы получить это:
<History>
<Event SortOrder="1"></Event>
<Event SortOrder="2"></Event>
</History>
Каким-то образом я закончил снесколько строк, имеющих порядок сортировки дважды, один верхний регистр и один нижний регистр.(и значения разные).
Я не уверен, как это случилось.У меня есть хранимая процедура для добавления порядка сортировки к существующим записям, и у нас есть код dotNet, который кто-то другой написал для добавления порядка сортировки к новым записям.
Как найти элемент с дублирующимися атрибутами?Я пытаюсь это сделать, но я не думаю, что существует с учетом регистра.
select m.c.query('.') theElement
from Histories h
cross apply h.XMLHistory.nodes('History/Entry') m(c)
where (
XmlHistory.exist('(History/Entry[(@SortOrder)])')= 1
and XmlHistory.exist('(History/Entry[(@sortOrder)])')= 1
)
Мой процесс добавления порядка сортировки делает это:
update Histories
set
XmlHistory.modify('
insert attribute SortOrder {sql:variable("@sortOrder")}
into (History/Entry[not(@SortOrder)])[1]
')
where HistoryID=@historyID
Это добавляет SortOrder, когда это не тактам.Может быть, строчная версия уже там, а потом я добавляю заглавную версию?Я так не думаю, потому что мой выбор выше не чувствителен к регистру?
- Как мне найти дупла?Я думаю, что мне нужен регистр, чувствительный к регистру.
- Похоже, что мое обновление вызывает провалы?