2013-03-05 2 views
0

저는 XML 용 XML이 새롭고이 문제를 해결하는 방법에 대해 매우 혼란 스럽습니다.XML 컬럼에서 속성을 이동하고 태그를 제거하십시오.

나는, 느릅 나무 (@ID, @code, @Name 및 @XmlContent 작곡) 내 테이블 tbAgreement에 @XmlContent라는 colunm에 다음 XML에 대응 한 : 내가 원하는 무엇

<agreement> 
    <vendor code='VND_johnmcfly> 
    <city code='CTY_Vegas'> 
    <events> 
    <event date='2012-21-08'/> 
    <event date='2013-20-01'/> 
    <event date='2014-20-01'/> 
    </events> 
</agreement> 

<agreement> 
    <events> 
    <event date='2012-21-08' vendor='VND_johnmcfly' city='CTY_Vegas'/> 
    <event date='2013-20-01' vendor='VND_johnmcfly' city='CTY_Vegas'/> 
    <event date='2014-20-01' vendor='VND_johnmcfly' city='CTY_Vegas'/> 
    </events> 
</agreement> 

기존의 태그 공급 업체 및 도시를 제거하고 모든 테이블 레코드는 각각 갱신해야한다는 말을하는 것이 중요하다 : 이벤트 속성으로 공급 업체 및 도시 태그의 코드 값을 이동 배치하는 것입니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 미리 감사드립니다!

답변

0

어쩌면 당신은 이미 답을 찾을 수있다,하지만 다른 사람에게 도움이 될 수

declare @xml xml 
set @xml= 
'<agreement> 
    <vendor code="VND_johnmcfly" /> 
    <city code="CTY_Vegas" /> 
    <events> 
    <event date="2012-21-08"/> 
    <event date="2013-20-01"/> 
    <event date="2014-20-01"/> 
    </events> 
</agreement>' 

declare @txml table(x xml) 
insert into @txml values(@xml); 

UPDATE t SET x=x.query('<agreement> 
<events> 
{ 
for $d in //events/event/@date, 
    $v in //vendor/@code, 
    $c in //city/@code 
return <event date="{$d}" city="{$c}" vendor="{$v}"/> 
} 
</events> 
</agreement>') 
FROM @txml t 

select * from @txml 
관련 문제