我有一个包含ntext
类型列的表。此列包含xml as string
我想删除一个可以存在多次的元素。
我该怎么做?
示例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
答案 0 :(得分:1)
如果你需要这样做,那么你必须
XML
所以你需要做这样的事情:
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
......因此您应首先真正修复您的表格结构(将该列设为{{1}首先!)在浪费时间尝试更新这个已弃用的列类型之前!