在XML列中编辑单个条目的最简单方法?


9

据我了解,MS SQL Server Management Studio不允许通过GUI直接编辑/替换XML列中的条目(复制/粘贴不起作用等)。

在XML列中替换单个条目的最简单选择是什么?对于XML列值,是否必须使用与UPDATE / REPLACE不同的东西?

Answers:


22

如果只需要一次替换整个XML,则可以执行常规的UPDATE,例如,如下所示:

UPDATE yourTable
SET yourXML = '<yourNewValidXML/>' 
WHERE rowId = 1

如果需要编辑单个属性或元素,则可以在SQL Server中使用XML数据类型的.modify方法来更新单个值。这是一个入门的简单示例:

DECLARE @t TABLE ( rowId INT IDENTITY PRIMARY KEY, yourXML XML )

INSERT INTO @t ( yourXML )
VALUES ( '<Users>
    <User Name="Bob"></User>
    <User Name="Mikhail"></User>
    <User Name="John"></User>
    <User Name="Sue"></User>
</Users>' )

SELECT 'before' s, DATALENGTH(yourXML) dl, yourXML
FROM @t
WHERE rowId = 1

-- Update one attribute
UPDATE @t
SET yourXML.modify('replace value of (Users/User/@Name[.="Bob"])[1] with "wBob"')
WHERE rowId = 1

SELECT 'after' s, DATALENGTH(yourXML) dl, yourXML
FROM @t
WHERE rowId = 1

如果您需要更多帮助,请发布您的XML的一小部分示例和预期结果。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.