相关疑难解决方法(0)

SQL Update查询根据xml节点值更新记录中的xml?

我有一列ntext数据类型和非XML.它存储所有xml数据.我需要更新记录中的xml节点.它抛出一个错误,说"错误使用xml数据类型方法'修改'.在此上下文中应该使用非mutator方法."

begin transaction
declare @Cps_Id int;
set @Cps_Id = 236;
declare @Cps_Message nvarchar(1024);
set @Cps_Message = 'updating cpsia message with smoking'; 

update table_name
set column_name =  CONVERT(xml,column_name).modify('replace value of (/root/ProductInformation/CPSIA/CpsiaDetails/Item[CpsiaId=sql:variable("@Cps_Id")]/CpsiaMessage/text())[1] with sql:variable("@Cps_Message")') 
WHERE Convert(xml,column_name).exist('/root/ProductInformation/CPSIA/CpsiaDetails/Item[CpsiaId=sql:variable("@Cps_Id")]')=1 

rollback  
Run Code Online (Sandbox Code Playgroud)

示例XML:

<root>
  <ProductInformation>
    <Name> Truck with Battery Charger</Name>
    <Description>Fr.</Description>
    <CPSIA>
      <CpsiaDetails>
        <Item>
          <CpsiaId>456</CpsiaId>
          <CpsiaMessage>waring</CpsiaMessage>
        </Item>
        <Item>
          <CpsiaId>236</CpsiaId>
          <CpsiaMessage>to health</CpsiaMessage>
        </Item>
      </CpsiaDetails>
    </CPSIA>
  </ProductInformation>
</root>
Run Code Online (Sandbox Code Playgroud)

xml sql

6
推荐指数
1
解决办法
7215
查看次数

标签 统计

sql ×1

xml ×1