繁体   English   中英

如何从SQL中的ntext列中删除xml节点

[英]How to delete xml node from ntext column in SQL

我有一个带有ntext类型列的表。 此列包含xml作为字符串

我想删除一个可以存在多次的元素。

我怎么做?

xml输入示例:

<CATALOG>
    <CD>
        <TITLE>Empire Burlesque</TITLE>
        <ARTIST>Bob Dylan</ARTIST>
        <COUNTRY>USA</COUNTRY>
        <COMPANY>Columbia</COMPANY>
        <PRICE>10.90</PRICE>
        <YEAR>1985</YEAR>
    </CD>
    <CD>
        <TITLE>Hide your heart</TITLE>
        <ARTIST>Bonnie Tyler</ARTIST>
        <COUNTRY>UK</COUNTRY>
        <COMPANY>CBS Records</COMPANY>
        <PRICE>9.90</PRICE>
        <YEAR>1988</YEAR>
    </CD>
</CATALOG>

我想使用SQL更新脚本删除节点COUNTRY

如果需要这样做,则必须

  • 将数据加载到XML类型的SQL变量中
  • 在该变量上执行修改
  • 再次更新您的表格

因此,您需要执行以下操作:

DECLARE @XmlVar XML

SELECT @XmlVar = CAST(YourNtextColumn AS XML)
FROM dbo.YourTable
WHERE ID = 123

SET @XmlVar.modify('delete /CATALOG//CD/COUNTRY')

SELECT @XmlVar

现在,最后,您必须将修改后的XML变量写回到表中。 问题是:您不能从XML转换为NTEXT ......因此,您应该先浪费时间尝试更新此不赞成使用的列类型,然后才应该真正修复表结构(首先使该列成为XML !)。 ..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM