У меня есть столбец XML в моей SQL таблицы, которая содержит что-то вроде этого:Удалить узел из столбца XML с тем, где
<date>
<entry action="Log in" insertedTime="2014-01-05T15:05:18.4476032+02:00" />
<entry action="Log in" insertedTime="2014-01-10T16:02:10.8974142+02:00" />
<entry action="Log out" insertedTime="2014-01-11T16:44:54.8380633+02:00" />
</date>
Я пытаюсь очистить этот столбец (у меня есть намного больше, чем 3 записи, 100s), и все, что я хочу сделать, это сохранить последние 2 дня данных, т. е. удалить что-нибудь старше (максимальная дата) - 2 дня.
Я могу получить максимальное время вставки и поместить его в переменную, но, конечно, это максимальное время вставки для всех строк в таблице, я хочу сделать это по принципу «за строку». То есть удалите последние 2 дня даты из каждой строки. Максимальное значение даты для каждой строки может отличаться.
Функция удаления я использую (в настоящее время с использованием временной таблицы для тестирования):
update #xmltemp
set data.modify('delete //entry[@insertedTime < sql:variable("@maxDate")]')
Есть ли способ сделать это?
РЕДАКТИРОВАТЬ: У меня теперь работает курсор, но есть ли другой способ сделать это?
Благодаря
Не было бы проще использовать Java или какой-либо другой язык программирования для извлечения, обработки записи и обновления обратно? – IndoKnight
У меня он работает с курсором, но предпочитает делать это без него. Я должен предоставить сценарий клиенту, и он не был бы счастлив запускать приложение (настройка соединения с DB и т. Д.). – Richard