2017-09-05 7 views
0

XML 콘텐츠가있는 nvarchar 열이 있습니다. XML로 변환해야하는지 여부는 확실하지 않습니다.XML 쿼리가있는 SQL 쿼리 업데이트 nvarchar가 노드에 누락 된 특성을 추가합니다.

<MyFirstNode SomeAttribute="value" SomeOtherAttribute="anothervalue"> 

업데이트하려면 :

<MyFirstNode SomeAttribute="value" AddThisAttribute="nicevalue" SomeOtherAttribute="anothervalue"> 

내가 모든 업데이트 할 수 있습니다 방법은 모든 XML 내용이 기록의 숫자를 제외하고 같은 첫 번째 노드가 속성이 추가 필요가있는 수정해야 포맷 AddThisAttribute = "nicevalue"가있는 필수 노드입니까? 모두 같은 속성과 가치가 필요합니다.

+0

XML이 포함 된 경우 열이 NVARCHAR이고 XML이 아닌 이유가 있습니까? 여러분의 선택이 XML로 변환되고'modify ('AddThisAttribute {("nicevalue")}를 (*) [1]') 함수에 삽입하거나'STUFF' 문을 쓰는 것으로 가정합니다 귀하의 칼럼을 그대로 유지하십시오. – ZLK

답변

1

실제로 XML로 해석 될 경우 속성 목록 중간에 AddThisAttribute = "nicevalue"를 삽입 할 필요는 없습니다. 하나의 옵션이 할 수있는 간단한

UPDATE myTable 
SET XMLColumn = REPLACE(XMLColumn, '<MyFirstNode ', '<MyFirstNode AddThisAttribute="nicevalue" ') 

이 값을 삽입하는 것보다 쉬울 수 있습니다, 특히 경우 각 행의 SomeAttribute 및 SomeOtherAttribute 변화. "SomeOtherAttribute는"MyFirstNode 이외의 다른 노드 유형에 나타나는 경우,이 원하지 않는 변경을 할 수 있지만

또는,

UPDATE myTable 
SET XMLColumn = REPLACE(XMLColumn, ' SomeOtherAttribute=', ' AddThisAttribute="nicevalue" SomeOtherAttribute=') 

이 작동 할 수있다.

+0

정답으로 설정했지만 이것은 nvarchar이며 XML 열로 업데이트하기 전에 XML로 캐스팅해야한다고 생각합니다. 감사! –