Удаление родительского узла

У меня есть следующий фрагмент 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("ВЫРАЖЕНИЕ ДЛЯ ПОИСКА", "ЧАСТЬ СТРОКИ ДЛЯ ПОИСКА", "СТРОКА ЗАМЕНЫ") ГДЕ.......

Другие вопросы по тегам