在sql server中解析xml

问题描述:

我有一个包含xtext的ntext类型列的表。我试图应用很多示例来说明如何从特定节点的xml中为公司名称获取值,但仍然会出现语法错误。下面是我做了什么,除了取代我的select语句的实际XML输出在sql server中解析xml

DECLARE @companyxml xml 

    SET @companyxml = 
    '<Home> 
     <slideshowImage1>1105</slideshowImage1> 
     <slideshowImage2>1106</slideshowImage2> 
     <slideshowImage3>1107</slideshowImage3> 
     <slideshowImage4>1108</slideshowImage4> 
     <slideshowImage5>1109</slideshowImage5> 
     <bottomNavImg1>1155</bottomNavImg1> 
     <bottomNavImg2>1156</bottomNavImg2> 
     <bottomNavImg3>1157</bottomNavImg3> 
     <pageTitle>Acme Capital Management |Homepage</pageTitle> 
     <metaKeywords><![CDATA[]]></metaKeywords> 
     <metaDescription><![CDATA[]]></metaDescription> 
     <companyName>Acme Capital Management</companyName> 
     <logoImg>1110</logoImg> 
     <pageHeader></pageHeader> 
    </Home>' 

SELECT c.value ('companyName','varchar(1000)') AS companyname 
FROM @companyxml.nodes('/Home') AS c 

出于某种原因,选择c.value语句有语法问题,我想不通。在悬停在SSMS中时,它表示'找不到列'c'或用户定义的函数或聚合“c.value”,或名称不明确。

任何有关语法的帮助将不胜感激。

在身为菜鸟的危险尝试这种

DECLARE @companyxml xml 

SET @companyxml = 
'<Home> 
    <slideshowImage1>1105</slideshowImage1> 
    <slideshowImage2>1106</slideshowImage2> 
    <slideshowImage3>1107</slideshowImage3> 
    <slideshowImage4>1108</slideshowImage4> 
    <slideshowImage5>1109</slideshowImage5> 
    <bottomNavImg1>1155</bottomNavImg1> 
    <bottomNavImg2>1156</bottomNavImg2> 
    <bottomNavImg3>1157</bottomNavImg3> 
    <pageTitle>Acme Capital Management Homepage</pageTitle> 
    <metaKeywords>CDATA</metaKeywords> 
    <metaDescription>CDATA</metaDescription> 
    <companyName>Acme Capital Management</companyName> 
    <logoImg>1110</logoImg> 
    <pageHeader></pageHeader> 
</Home>' 


DECLARE @Result AS varchar(50) 

SET @result = @companyxml.value('(/Home/companyName/text())[1]','varchar(50)') 

SELECT @result 
+0

,这台@result为“ Acme的资本管理的companyName>”,而我只需要公司名称“Acme的资本管理”。我可以做什么选择给我没有标签的价值? – neil1967

+0

已更新查询,请检查一次 – Kiran1016

+0

即可使用!谢谢 – neil1967