Удаление родительского узла
У меня есть следующий фрагмент XML в столбце в SQL Server
<ul>
<li><a id="cat" href="cat.html">Cat</a></li>
<li><a id="dog" href="dog.html">Dog</a></li>
Я хочу удалить <li>
тег, который имеет <a>
пометить с id="cat"
DECLARE @id varchar(40) = 'cat'
UPDATE dbo.Pref
SET xmlPref.modify('delete /ul/li/a[@id=sql:variable("@id")]')
WHERE pref = 1
Не совсем работает как уходит <li>
вокруг.
2 ответа
Решение
Удалить элемент "a" в пути выражения и добавить его в условие
DECLARE @id varchar(40) = 'cat'
UPDATE dbo.Pref
SET xmlPref.modify('delete //ul/li[a/@id=sql:variable("@id")]')
WHERE pref = 1
Смотрите демонстрацию по SQLFiddle
Как насчет использования встроенной функции замены в SQL Server
ОБНОВЛЕНИЕ dbo.Pref SET COLUMNNAME = REPLACE("ВЫРАЖЕНИЕ ДЛЯ ПОИСКА", "ЧАСТЬ СТРОКИ ДЛЯ ПОИСКА", "СТРОКА ЗАМЕНЫ") ГДЕ.......