2015-10-05 6 views
1

мне нужна помощь с запроса данных XML в SQL Server 2012. У меня есть база данных, которая содержит таблицу 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

Большое спасибо !! –

Смежные вопросы