XML列の単一のエントリを編集する最も簡単な方法は?


9

MS SQL Server Management Studioでは、GUIを使用してXML列のエントリを直接編集/置換することはできません(コピー/貼り付けは機能しません)。

XML列の単一のエントリを置き換える最も簡単なオプションは何ですか?XML列の値には、UPDATE / REPLACEとは異なるものを使用する必要がありますか?

回答:


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の小さなサンプルと期待される結果を投稿してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.