2012-04-24 4 views
0

У меня есть столбец XML в таблицу, которая выглядит следующим образом:Как обновить таблицу полей xml в sql?

<word A="al" B="h" C="Ps" /> 
<word A="has" B="es" C="Pf" /> 
<word A="mom" B="es" C="Ph" /> 

Я хочу обновить это поле, как это:

<word A="al" B="B1" C="C1" /> 
<word A="has" B="B2" C="C1" /> 
<word A="mom" B="B2" C="C2" /> 

Я хочу сделать с помощью функции в SQL Server.

Спасибо!

+4

Необходимо описать логику обновления. –

+0

Я вроде понимаю назначение B1/B2, но назначение C1/C2 для меня не имеет смысла. Не могли бы вы объяснить и объяснить, откуда берутся коэффициенты для B и C? –

ответ

4

Как утверждает Микаэль, вам необходимо описать логику обновления. Но для ожидаемого выхода выше должно работать следующее:

DECLARE @Words xml 
SELECT @Words = ' 
<word A="al" B="h" C="Ps" /> 
<word A="has" B="es" C="Pf" /> 
<word A="mom" B="es" C="Ph" />' 

SET @Words.modify('replace value of(/word[@A = "al"]/@B)[1] with "B1"') 
SET @Words.modify('replace value of(/word[@A = "al"]/@C)[1] with "C1"') 
SET @Words.modify('replace value of(/word[@A = "has"]/@B)[1] with "B2"') 
SET @Words.modify('replace value of(/word[@A = "has"]/@C)[1] with "C1"') 
SET @Words.modify('replace value of(/word[@A = "mom"]/@B)[1] with "B2"') 
SET @Words.modify('replace value of(/word[@A = "mom"]/@C)[1] with "C2"') 

SELECT @Words 
Смежные вопросы