Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Подскажите по запросу XPath / 2 сообщений из 2, страница 1 из 1
21.08.2012, 16:49
    #37925019
boltnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по запросу XPath
Есть таблица с полем xml, каждая запись которой имеет вид
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<Root>
			<Item>
				<SubItem1 v="subitem1.1" >
					<action  rule="rule 1.1" />
					<action  rule="rule 1.2" />
				</SubItem1>
				<SubItem2 v="SubItem1.2" >
					<action  rule="rule 2.1" />
				</SubItem2>
				<SubItem3 v="SubItem1.3" > 
					<action value="check" rule="rule 3.1" />
				</SubItem3>
				<SubItem4 v="SubItem1.4">
					<action value="check" rule="rule 4.1" />
				</SubItem4>
			</Item>

	</Root>


Заполнение
F OBJECT_ID (N'tempdb..#tmpXml ', N'U') IS NOT NULL
DROP TABLE #tmpXml ;

create table #tmpXml
(
ID int IDENTITY(1,1),
Stat xml not null
)


DECLARE @x xml;
SET @x = N'<Root>
<Item>
<SubItem1 v="subitem1.1" >
<action rule="rule 1.1" />
<action rule="rule 1.2" />
</SubItem1>
<SubItem2 v="SubItem1.2" >
<action rule="rule 2.1" />
</SubItem2>
<SubItem3 v="SubItem1.3" >
<action rule="rule 3.1" />
</SubItem3>
<SubItem4 v="SubItem1.4">
<action rule="rule 4.1" />
</SubItem4>
</Item>

</Root>
'
insert into #tmpXml (stat) values(@x)


SET @x = N'<Root>
<Item>
<SubItem1 v="subitem2.1" >
<action rule="rule 1.1" />
<action rule="rule 1.2" />
</SubItem1>
<SubItem2 v="subitem2.1" >
<action rule="rule 2.1" />
</SubItem2>
<SubItem3 v="subitem2.1" >
<action rule="rule 3.1" />
</SubItem3>
<SubItem4 v="subitem2.1">
<action rule="rule 4.1" />
</SubItem4>
</Item>
</Root>
'
insert into #tmpXml (stat) values(@x)


Прочитав это пытаюсь (безуспешно) написать следующие запросы.

Как мне получить кол-во записей с "rule 2.1" ?
Пока додумался до такого:
Код: sql
1.
2.
3.
4.
select 
		x.a.value(N'(*/action/@rule)','nvarchar(20)') as 'Rule'
FROM #tmpXml s
cross apply s.stat.nodes(N'/Root/Item') x(a)	



Как получить кол-во записей, имеющих элемент SubItem2
Пока count(*) не писал, пытаюсь вывести такие элементы
Код: sql
1.
2.
3.
4.
5.
select 
		x.a.value(N'(//SubItem2)','nvarchar(20)') as 'SubItem'
FROM #tmpXml s
cross apply
			s.stat.nodes(N'/Root/Item') x(a)	



P.S. Mssql 2008
...
Рейтинг: 0 / 0
21.08.2012, 17:26
    #37925087
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по запросу XPath
boltnikКак мне получить кол-во записей с "rule 2.1" ?
boltnikКак получить кол-во записей, имеющих элемент SubItem2Каких записей? Item? SubItemN?
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Подскажите по запросу XPath / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]