XML数据类型函数不存在



所以我有了这段sql,它可以获取内容编码为html的XML节点。然后,我将其转换为varchar,并对其进行"解码",然后将其转换回XML数据类型。我遇到的问题是,当我调用nodes函数时,它会说"nodes" is not a valid function, property, or field.。奇怪的是,如果使用其他函数queryvalueexistmodify,它不会抱怨。有什么原因吗?

Declare @XmlEl As XML
DECLARE @htmlString As varchar(max)
Select @XmlEl = CAST(replace(CAST(Body AS VARCHAR(MAX)), 'utf-16', 'utf-8') AS xml) FROM Templates where TemplateID = 3119
Set @XmlEl = @XmlEl.query('/PdfTemplate/PdfBody').query('string(/)')
Select CAST(@XmlEl As varchar(max))
Set @htmlString = Replace(CAST(@XmlEl As varchar(max)), '&lt;', '<')
Set @XmlEl = CAST(Replace(@htmlString, '&gt;', '>') AS XML)
Select @XmlEl.nodes('p/span')

我不认为你可以像那样从@XmlEl.nodes中进行SELECT。我相信你需要更像的东西

Select x.a.query('.') FROM @XmlEl.nodes('p/span') x(a)

从MSDN nodes()引用

最新更新