그 값에 따라 요소 태그의 값을 바꾸고 싶습니다. 그리고 그 요소와 동일한 레벨에있는 다른 요소의 값을 바꾸고 싶습니다. 모든 요소 태그는 모든 ID 태그 속성으로 인해 고유합니다. 저장 프로 시저에서이 XML 변수의 여러 위치에서 변경 작업을 수행하려고합니다.조건을 위해 XML을 수정 (바꾸기)
첫 번째 타이머이기 때문에 XML 전체에서 요소를 수정할 수있는 방법을 고수했습니다. 두 요소는 모두 문서 전체에서 동일한 부모 요소에 존재하며 모든 부모 태그는 고유 한 ID 특성을 갖습니다.
어떤 제안이라도 도움이 될 것입니다. "value()", "modify()"등을 혼합하고 일치시키는 방법에 대한 문서 링크가 도움이 될 것입니다.
DECLARE @xml xml = '
<SemanticModel xmlns="schemas.microsoft.com/sqlserver/2004/10/semanticmodeling"; xmlns:xsi="w3.org/2001/XMLSchema-instance"; xmlns:xsd="w3.org/2001/XMLSchema"; ID="G1">
<Entities>
<Entity ID="E1">
<Fields>
<Attribute ID="A1">
<Name>AAAA</Name>
<DataType>Float</DataType>
<Format>n0</Format>
<Column Name="AAAA_ID" />
</Attribute>
<Attribute ID="A2">
<Name>BBBB</Name>
<DataType>Integer</DataType>
<Format>n0</Format>
<Column Name="BBBB_ID" />
</Attribute>
<Attribute ID="A3">
<Name>KKKK</Name>
<Variations>
<Attribute ID="A4">
<Name>CCCC</Name>
<DataType>Float</DataType>
<Format>n0</Format>
</Attribute>
<Attribute ID="A5">
<Name>AAAA</Name>
<DataType>Float</DataType>
<Format>n0</Format>
</Attribute>
</Variations>
<Name>AAAA</Name>
<DataType>Float</DataType>
<Format>n0</Format>
</Attribute>
</Fields>
</Entity>
</Entities>'
DECLARE @i int = 0
;WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/10/semanticmodeling' as dm, 'http://schemas.microsoft.com/analysisservices/2003/engine' as dsv, 'http://w3.org/2001/XMLSchema' as xs)
select @i = @xml.value('count(//dm:Attribute[dm:DataType="Float" and dm:Format="n0"]/dm:Format)', 'int')
select @i
while @i > 0
begin
set @xml.modify('
replace value of
(//dm:Attribute[dm:DataType="Float" and dm:Format="n0"]/dm:Format/text())[1]
with "f2"
')
set @i = @i - 1
end
select @xml
나는 그 형식 값 "N0"이며 데이터 형식은 "부동"모든 속성에 대한 형식 값 "N0"을 "F2"를 대체합니다.
-Thankyou
입력 XML 및 원하는 출력 XML의 예를 추가 할 수 있습니까? –