2015-04-24 4 views
1

У меня есть значение XML в SQL полеКак заменить значение узла XML в SQL?

<Menu> 
    <MenuItem> 
    <MENU_ID>D</MENU_ID> 
    <MENU_Read>1</MENU_Read> 
    <MENU_Write>1,2,3,4,5</MENU_Write> 
    </MenuItem> 
    <MenuItem> 
    <MENU_ID>A</MENU_ID> 
    <MENU_Read>1</MENU_Read> 
    <MENU_Write>6,7</MENU_Write> 
    </MenuItem> 
    <MenuItem> 
    <MENU_ID>B</MENU_ID> 
    <MENU_Read>1</MENU_Read> 
    <MENU_Write>8,9,10</MENU_Write> 
    </MenuItem> 
    <MenuItem> 
    <MENU_ID>C</MENU_ID> 
    <MENU_Read>1</MENU_Read> 
    <MENU_Write>11,12,133</MENU_Write> 
    </MenuItem> 
</Menu> 

Я хочу, чтобы заменить текущее значение собрата в MENU_Write узла к значению MENU_ID узла «C», с пустым значением. Как мне это сделать?

+2

Какие РСУБД это? Добавьте тег, чтобы указать, используете ли вы 'mysql',' postgresql', 'sql-server',' oracle' или 'db2' - или что-то еще. –

+1

это sql-сервер. – rahulmr

ответ

1

Вы можете попробовать использовать SQL сервера replace value of, например:

declare @T XML = '<Menu> 
    <MenuItem> 
    <MENU_ID>D</MENU_ID> 
    <MENU_Read>1</MENU_Read> 
    <MENU_Write>1,2,3,4,5</MENU_Write> 
    </MenuItem> 
    <MenuItem> 
    <MENU_ID>A</MENU_ID> 
    <MENU_Read>1</MENU_Read> 
    <MENU_Write>6,7</MENU_Write> 
    </MenuItem> 
    <MenuItem> 
    <MENU_ID>B</MENU_ID> 
    <MENU_Read>1</MENU_Read> 
    <MENU_Write>8,9,10</MENU_Write> 
    </MenuItem> 
    <MenuItem> 
    <MENU_ID>C</MENU_ID> 
    <MENU_Read>1</MENU_Read> 
    <MENU_Write>11,12,133</MENU_Write> 
    </MenuItem> 
</Menu>' 

set @T.modify('replace value of (//MenuItem[MENU_ID="C"]/MENU_Write/text())[1] with ""') 

SQL Fiddle

0

Вы могли просто использовать простой UPDATE с полным текстом вы хотите:

UPDATE table 
SET xamlfield = 
'<Menu> 
    <MenuItem> 
    <MENU_ID>D</MENU_ID> 
    <MENU_Read>1</MENU_Read> 
    <MENU_Write>1,2,3,4,5</MENU_Write> 
    </MenuItem> 
    <MenuItem> 
    <MENU_ID>A</MENU_ID> 
    <MENU_Read>1</MENU_Read> 
    <MENU_Write>6,7</MENU_Write> 
    </MenuItem> 
    <MenuItem> 
    <MENU_ID>B</MENU_ID> 
    <MENU_Read>1</MENU_Read> 
    <MENU_Write>8,9,10</MENU_Write> 
    </MenuItem> 
    <MenuItem> 
    <MENU_ID> </MENU_ID> 
    <MENU_Read>1</MENU_Read> 
    <MENU_Write>11,12,133</MENU_Write> 
    </MenuItem> 
</Menu>' 
WHERE id = 123 
Смежные вопросы