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

Откуда:
Сообщений: 5
Подскажите, как можно сделать выборку, чтобы у меня были данные, которые содержат определенный атрибут XML.
Есть таблица, которая содержит 4 данные: id, дату создания, дату модификации и data, которая содержит XML.
Вот так выглядят xml:

<test_learning>
	<code>699384</code>
	<state_id>4</state_id>
	<score>7</score>
	<time>75051</time>
	<max_score>42</max_score>
	<question_num>35</question_num>
	<question_answered_num>35</question_answered_num>
	<question_passed_num>7</question_passed_num>
	<qti_text>...........................</qti_text>
	<qti_date>2018-05-23T16:21:34+00:00</qti_date>
</test_learning>

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

<test_learning>
	<code>149446</code>
	<state_id>4</state_id>
	<score>0</score>
	<time>1508</time>
	<max_score>9</max_score>
	<question_num>9</question_num>
	<question_answered_num>0</question_answered_num>
	<question_passed_num>0</question_passed_num>
</test_learning>


В одних есть два доп. атрибу qti_text и qti_date, а в других нет. Мне нужно сделать выборку, которая будет содержать эти два доп. тега.
Пробую вот так:
SELECT tl.id
FROM test_learning tl
WHERE tl.data.query('/test_learning/qti_date') is not null


Но не получается. Это не единственный вариант, который я пробовал.
11 дек 18, 18:15    [21760671]     Ответить | Цитировать Сообщить модератору
 Re: Определить, есть ли атрибут в XML таблице.  [new]
court
Member

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

так например
SELECT tl.id
FROM test_learning tl
WHERE tl.data.query('/test_learning/qti_date').value('text()[1]', 'datetime') is not null 
11 дек 18, 18:22    [21760679]     Ответить | Цитировать Сообщить модератору
 Re: Определить, есть ли атрибут в XML таблице.  [new]
court
Member

Откуда:
Сообщений: 1956
так наверное правильнее

SELECT tl.id
FROM test_learning tl
WHERE tl.data.exist('/test_learning/qti_date')=1
11 дек 18, 18:26    [21760683]     Ответить | Цитировать Сообщить модератору
 Re: Определить, есть ли атрибут в XML таблице.  [new]
greenbook
Member

Откуда:
Сообщений: 5
court, спасибо, ты лучший.
11 дек 18, 18:29    [21760686]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить