我想替换元素标签中的值,具体取决于它的值以及另一个元素的值(与所述元素处于同一级别),这两个元素到处都在同一个父元素标签中(每个父标签都是唯一的)
(由于其自身的ID属性)。我想在存储过程中的此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”且数据类型为“ Float”的所有属性的格式值“ n0”替换为“ f2”。
-谢谢
无法在SQL Server的xml中一次替换多个值,有几种选择:
我认为正确的方法是循环解决方案:
select @i = @data.value('count(//Attribute[DataType="Float" and Format="n0"]/Format)', 'int')
while @i > 0
begin
set @data.modify('
replace value of
(//Attribute[DataType="Float" and Format="n0"]/Format/text())[1]
with "f2"
')
set @i = @i - 1
end
[sql fiddle demo](http://sqlfiddle.com/#!3/d41d8/23529)
如果您的xml包含namepaces,我发现的最简单的更新方法是声明default
名称空间:
;with xmlnamespaces(default 'schemas.microsoft.com/sqlserver/2004/10/semanticmodeling')
select @i = @xml.value('count(//Attribute[DataType="Float" and Format="n0"]/Format)', 'int')
while @i > 0
begin
set @xml.modify('
declare default element namespace "schemas.microsoft.com/sqlserver/2004/10/semanticmodeling";
replace value of
(//Attribute[DataType="Float" and Format="n0"]/Format/text())[1]
with "f2"
')
set @i = @i - 1
end
select @xml
问题内容: 我可能在做一些非常愚蠢的事情,但是我很沮丧。 我有一个数据框,我想用超过零的值替换特定列中的值。我以为这是实现此目标的一种方式: 如果将通道复制到新的数据框中,这很简单: 这完全符合我的要求,但似乎无法与通道一起用作原始数据帧的一部分。 问题答案: 可以在0.20.0之前的熊猫版本上正常工作,但是由于pandas为0.20.0 ,因此不推荐使用,因此应避免使用它。而是可以使用或索引器。
文本编辑器最基本的功能就是对文件进行增删改查,前面的小节我们已经讲了增删等相关内容以及操作。这一节我们来看一下修改、查找和替换。 使用过 Word 的人应该很知道,在 Word 中我们使用 ctrl+f 来查找我们需要的内容。但是 Word 的查找功能比较单一,Vim 则提供了更加丰富的查找场景: 高亮查找 大小写敏感查找 重复查找 预览查找 1. 查找 使用查找功能我们需要进入普通模式,普通模式
我有一个数据集,包含一系列国家和年份的几个指标的值(3072,1134行和列),但有些NaN。 下面是数据集的示例: 我想根据提交的
具有不同角色的用户需要在网页顶部有不同的navbar。我的topnavs是th:片段,用单独的文件编写,这部分代码工作正常。但是当我使用th: switch和th:替换时,所有topnavs都会显示在网页中,而不仅仅是一个。 我在寻找这些问题的解决方案,但没有任何帮助: 带有多个大小写的胸腺叶开关语句 如何使用thymeleaf条件-if-elseif-else 我尝试过的事情: #2 #3 #4
我想创建一个
①点击条件详情即可编辑条件,如上图红框处 ②可编辑内容如上图,可编辑相关内容,也可删除该预警条件,删除按钮在右上角。 注意:如指标超限改为到期提醒的话,那图层下面需要有日期字段才可成功更改。