2013-06-17 4 views
1

У меня есть следующий фрагмент 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

удалить„а“элемент в пути выражения и добавить его в состояние

DECLARE @id varchar(40) = 'cat' 

UPDATE dbo.Pref 
SET xmlPref.modify('delete //ul/li[a/@id=sql:variable("@id")]') 
WHERE pref = 1 

Смотрите демо на SQLFiddle

-1

что об использовании заменить встроенную функцию в SQL Server

UPDATE dbo.Pref SET ColumnName = ЗАМЕНИТЬ («выражение, искавшие», «часть строки для поиска», 'ЗАМЕНА STRING «) ГДЕ .......

Смежные вопросы