我想在元素標籤(如,所述元件在相同的電平)來代替值,取決於它的值,以及另一元素的值XML,兩個元件是內相同父元素標籤無處不在(每個父標籤由於其自己的ID屬性而是唯一的)。我想在存儲過程中在此XML變量的各個位置進行更改。修改(替換)爲條件
處於這第一個計時器,我堅持我怎麼能修改整個XML元素。兩個元素都存在於整個文檔的同一父元素中,並且這些父元素中的每一個都具有唯一的ID屬性。
任何建議將是很大的幫助。 文檔的鏈接瞭解如何混搭「值()」,「修改()」等也將有所幫助。
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
我要替換格式值「NO」爲「F2」的,其格式值是「NO」和數據類型是「浮動」的所有屬性。
-Thankyou
您可以加入您的XML輸入和期望的輸出XML的例子嗎? –