更新时间:2022-05-03 06:07:27
在SQL Server 2005+
中,使用中间临时表:
In SQL Server 2005+
, using a intermediary temporary table:
DECLARE @q AS TABLE (xid INT NOT NULL, xdoc XML NOT NULL, modified TINYINT NOT NULL DEFAULT 0)
INSERT
INTO @q (xid, xdoc)
SELECT id, doc
FROM mytable
UPDATE @q
SET xdoc.modify('replace value of (/TYPE/@Colour)[1] with "blue"'),
modified = 1
WHERE xdoc.value('(/TYPE/@Colour)[1]', 'NVARCHAR(MAX)') = 'Yellow'
UPDATE mytable
SET doc = CAST(xdoc AS NVARCHAR(MAX))
FROM @q q
WHERE id = q.xid
AND q.modified = 1