Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос из XML  [new]
mezzanine
Member

Откуда:
Сообщений: 157
Доброго дня.

Есть XML вида:
<root>
  <attr>
    <code>ENT_ISSUE.ID</code>
    <value>50</value>
  </attr>
  <attr>
    <code>USR_USER.ID</code>
    <value>1</value>
  </attr>
</root>


Как можно получить значение из "value" зная значение "code".
22 апр 16, 15:19    [19094183]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из XML  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
DECLARE @xml XML = '
<root>
  <attr>
    <code>ENT_ISSUE.ID</code>
    <value>50</value>
  </attr>
  <attr>
    <code>USR_USER.ID</code>
    <value>1</value>
  </attr>
</root>'

SELECT t.c.value('code[1]', 'VARCHAR(MAX)')
FROM @xml.nodes('root/attr[value/. = "50"]') t(c)
22 апр 16, 15:26    [19094251]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из XML  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Перепутал местами. Вот правильный вариант:

DECLARE @xml XML = '
<root>
  <attr>
    <code>ENT_ISSUE.ID</code>
    <value>50</value>
  </attr>
  <attr>
    <code>USR_USER.ID</code>
    <value>1</value>
  </attr>
</root>'

DECLARE @val NVARCHAR(100) = N'ENT_ISSUE.ID'

SELECT t.c.value('value[1]', 'INT')
FROM @xml.nodes('root/attr[code/. = sql:variable("@val")]') t(c)
22 апр 16, 15:31    [19094297]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из XML  [new]
mezzanine
Member

Откуда:
Сообщений: 157
AlanDenton,

Спасибо. Заодно узнал/прочитал о биндинге скл переменных.
22 апр 16, 15:57    [19094510]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из XML  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Рад был помочь. Недавно был 24 Hours of PASS 2016 там как раз про XML рассказывал это и многое другое. Если будет интересно - вот линк
22 апр 16, 16:15    [19094666]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить