Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 вопрос по xquery  [new]
xquery-ист
Guest
Добрый день!
Есть набор xml с одинаковой, в основном, структурой, которые отличаются именем корневого элемента.
Помогите пожалуйста написать запрос, который вернёт значение элемента e3 независимо от имени рутового элемента.
Код ниже.
Для xml1 и xml2 запрос должен вернуть значение 1, для xml3 ничего возвращаться не должно

declare @xml xml, @xml2 xml, @xml3 xml
select @xml = 
'<root>
	<e1>
		<e2>
			<e3>1</e3>
			<e3>2</e3>
			<e3>3</e3>
		</e2>
	</e1>
</root>'
select @xml2 = 
'<root2>
	<e1>
		<e2>
			<e3>1</e3>
			<e3>2</e3>
			<e3>3</e3>
		</e2>
	</e1>
</root2>'
select @xml3 = 
'<root3>
	<e0>
		<e1>
			<e2>
				<e3>1</e3>
				<e3>2</e3>
				<e3>3</e3>
			</e2>
		</e1>
	</e0>
</root3>'
11 апр 14, 15:14    [15868601]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по xquery  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
select n.value('.', 'int') from @xml.nodes('//e3') t(n);
select n.value('.', 'int') from @xml2.nodes('//e3') t(n);
select n.value('.', 'int') from @xml3.nodes('//e3') t(n);
11 апр 14, 15:17    [15868637]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по xquery  [new]
xquery-ист
Guest
invm,
спасибо, но //e3 не надо, поскольку в более сложном случае может быть элемент e3 более глубокой вложенности, и мне он не интересен.
Я пытался это выразить вот этой фразой : "для xml3 ничего возвращаться не должно"
11 апр 14, 15:20    [15868659]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по xquery  [new]
Кавказ-сила
Member

Откуда: Москва
Сообщений: 261
select top 1 n.value('.', 'int')
from @xml.nodes('/*/e1/e2/e3') t(n)
11 апр 14, 15:24    [15868694]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по xquery  [new]
xquery-ист
Guest
Кавказ-сила,
точно вот оно! Я забыл как это правильно писать :)
Кавказ, спасибо большое!
11 апр 14, 15:32    [15868757]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить