XML 열에서 단일 항목을 편집하는 가장 간단한 방법은 무엇입니까? 편집 / 교체

MS SQL Server Management Studio는 GUI를 통해 XML 열의 항목을 직접 편집 / 교체 할 수 없습니다 (복사 / 붙여 넣기 등은 작동하지 않음).

XML 열에서 단일 항목을 바꾸는 가장 쉬운 옵션은 무엇입니까? XML 열 값에 UPDATE / REPLACE와 다른 것을 사용해야합니까?



답변

전체 XML 조각을 한 번에 교체해야하는 경우 다음과 같은 일반적인 업데이트를 수행 할 수 있습니다.

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의 작은 샘플과 예상 결과를 게시하십시오.