2015-10-05 46 views
1

我需要一些帮助,在SQL Server 2012中查询XML数据我有了一个表Parameters_XML的列XML XML查询

id, application, parameter_nr flag, value 

parameter_nr是如1和该参数的值的数据库如下:

<Root> 
    <Row> 
    <Item id="1344" flags="257"> 
     <Row> 
     <Item id="1179" flags="257"> 
      <Str>Gall Studio Design SRL</Str> 
     </Item> 
     <Item id="1421" flags="257"> 
      <Str>22204869</Str> 
     </Item> 
     ........................... 

我需要检索的值都在产品和1179 1421

例如应用程序:为应用程序1项目1179的价值是Gall Studio Design SRL等。

到目前为止,我已经写了下面的查询:

SELECT 
    CAST(x.Value AS XML).value('(/Root/Row/Item[@id="1344"/Row/Item[@id="1179"])[1]', 'nvarchar(100)') 
FROM 
    Parameters_Xml x 
WHERE 
    parameter_nr = 1 

,但我得到了以下错误:

XQuery [value()]: Syntax error near ')', expected ']'.

请帮我所需的项目的有效路径。

回答

1

你需要接近[Item[@id="1344" - 如果你想在Str子节点的值,你需要添加Str到您的XPath:

SELECT 
    CAST(x.Value AS XML).value('(/Root/Row/Item[@id="1344"]/Row/Item[@id="1179"]/Str)[1]', 'nvarchar(100)') 
FROM 
    Parameters_Xml x 
WHERE 
    parameter_nr = 1 
+0

非常感谢您! –