Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Парсим XML / 3 сообщений из 3, страница 1 из 1
10.10.2019, 11:45
    #39874484
dm_fillipov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсим XML
Доброго времени суток!
Столкнулся с проблемой, не могу разобрать xml файл
Текст xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<?xml version="1.0"?>
<cards>
	<card>
		<card_id>113</card_id>
		<user_buhta_id>1617</user_buhta_id>
		<checking_buhta_id>1617</checking_buhta_id>
		<types>
			<type>28791</type>
		</types>
		<comment>ddddssss 123</comment>
	</card>
	<card>
		<card_id>112</card_id>
		<user_buhta_id>1617</user_buhta_id>
		<checking_buhta_id>1617</checking_buhta_id>
		<types>
			<type>28790</type>
		</types>
		<comment>qwwqqewq</comment>
	</card>
	<card>
		<card_id>109</card_id>
		<user_buhta_id>1617</user_buhta_id>
		<checking_buhta_id>1617</checking_buhta_id>
		<types>
			<type>28790</type>
			<type>28791</type>
		</types>
		<comment/>
	</card>	
</cards>



Выполняю запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DECLARE @xml XML
SELECT @xml = BulkColumn
FROM OPENROWSET(BULK 'C:\cards_26_09_2019.xml', SINGLE_BLOB) x

SELECT b.n.value('(*:card_id/text())[1]', 'INT') AS card_id
, b.n.value('(*:user_buhta_id/text())[1]', 'INT') AS user_buhta_id
, b.n.value('(*:checking_buhta_id/text())[1]', 'INT') AS checking_buhta_id
, b.n.value('(*:types/*:type/text())[1]', 'INT') AS type
, b.n.value('(*:comment/text())[1]', 'NVARCHAR(200)') AS comment    
FROM @xml.nodes('//*:card') b(n)



Выводится 3 записи. А мне надо что бы запись с id 109 выводилась 2 раза с разными типами.
Помогите пожалуйста.
...
Рейтинг: 0 / 0
10.10.2019, 11:49
    #39874488
Парсим XML
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT b.n.value('(card_id/text())[1]', 'INT') AS card_id
     , b.n.value('(user_buhta_id/text())[1]', 'INT') AS user_buhta_id
     , b.n.value('(checking_buhta_id/text())[1]', 'INT') AS checking_buhta_id
     , t.c.value('(text())[1]', 'INT') AS type
     , b.n.value('(comment/text())[1]', 'NVARCHAR(200)') AS comment
FROM @x.nodes('cards/card') b(n)
CROSS APPLY b.n.nodes('types/type') t(c)
...
Рейтинг: 0 / 0
10.10.2019, 11:50
    #39874490
dm_fillipov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсим XML
Sergey Syrovatchenko, спасибо большое за помощь!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Парсим XML / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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