You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过<xsi:type>设置SQL XML节点路径修改Name字段

解决SQL Server XML字段修改中含xsi:type属性节点的路径问题

这个报错的原因很明确:你在XQuery路径里处理带命名空间的属性时,写法不符合XQuery的语法规范。直接把xsi:type="QueryObjectKey"跟在Operand节点后面是错误的,而且还没正确声明对应的命名空间。

要解决这个问题,只需要两步调整:

  • 首先在XQuery语句开头声明xsi命名空间,和XML里的命名空间URI保持一致
  • 用属性过滤的方括号语法,精准定位带有指定xsi:type的Operand节点

下面是修正后的完整SQL语句:

DECLARE @NewValue Varchar(255) = 'None'
UPDATE [ACVSCore].[Access].[Query] 
SET XMLEncodedCriteria.modify('
    declare namespace xsi="http://www.w3.org/2001/XMLSchema-instance";
    replace value of (/QueryExpression/Criteria/CriteriaExpression/Operand[@xsi:type="QueryObjectKey"]/Name/text())[1] 
    with sql:variable("@NewValue")
')

关键调整说明:

  • 命名空间声明:添加declare namespace xsi="http://www.w3.org/2001/XMLSchema-instance";,让XQuery能识别xsi前缀对应的命名空间——你的XML里明确定义了这个命名空间,XQuery必须匹配才能正确解析属性。
  • 节点路径修正:把原来的Operand xsi:type="QueryObjectKey"改成Operand[@xsi:type="QueryObjectKey"],这是XQuery里通过属性过滤节点的标准写法,用方括号包裹属性条件就能精准定位目标节点。

这样修改后,就能正确找到<Operand xsi:type="QueryObjectKey">下的<Name>节点,顺利完成值的替换操作。

内容的提问来源于stack exchange,提问作者GForce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:13:33