SQL Server 2005에서 XQuery를 사용하여 열에 저장된 XML을 업데이트하려고합니다. 다음은 업데이트해야하는 데이터의 샘플입니다.Xquery를 사용하여 xsi : nil = "true"인 노드 값 바꾸기
<Length>3</Length>
<Width>5</Width>
<Depth>6</Depth>
<Area xsi:nil="true" />
<Volume xsi:nil="true" />
다른 테이블의 값으로 영역과 볼륨을 설정해야합니다. 업데이트를위한 CTE를 생성 중입니다. 이 내가 생략 한 다른 논리는,하지만 난 CTE 업데이트에 대한 올바른 데이터를 포함하고 있다는 것을 확인했다 :
;with Volume (DocumentID, Volume) As
(
Select DocumentID, Volume from tbl
)
나는 테이블을 업데이트하려고하려면 다음 XQuery를 SQL 문을 사용하고 있습니다.
UPDATE tbl_Archive
SET XML.modify(' declare namespace x="http://www.redacted.com";
replace value of (/x:Document/x:Volume/text())[1]
with sql:column("Volume.Volume")')
From Volume where volume.documentID = tbl_Archive.DocumentID
나는 영향을 1 개 행을 얻을 수 있지만, 나는 XML을 볼 때이 변경되지 않은, 나는 그것이 작동되도록 고정 될 필요가 무엇인지 알아낼 수 없습니다. 차이가 나는 경우 노드는 유형이 지정되지 않습니다.
그래,이했다 그것. 감사! –