powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удалить часть данных из xml
5 сообщений из 5, страница 1 из 1
Удалить часть данных из xml
    #39826484
gnatochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добрый день.
Помогите пожалуйста с запросом.

Есть 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.
32.
<Заголовок>
	<Данные01>Инфо</Данные01>
	<Данные02>Инфо</Данные02>
	<Данные03>Инфо</Данные03>
	<Данные04>Инфо</Данные04>
	<Ветка01>
		<Данные01>Инфо</Данные01>
		<Данные01>Инфо</Данные01>
		<Ветка02>
			<Данные02>Инфо</Данные02>
		</Ветка02>
	</Ветка01>
	<Ветка03>Инфо</Ветка03>
	<Ветка04>
		<Ветка05>
			<Данные01>Инфо в рублях</Данные01>
			<Валюта>643</Валюта>
		</Ветка05>
		<Ветка05>
			<Данные01>Инфо в долларах</Данные01>
			<Валюта>840</Валюта>
		</Ветка05>
		<Ветка05>
			<Данные01>Инфо в рублях</Данные01>
			<Валюта>643</Валюта>
		</Ветка05>
		<Ветка05>
			<Данные01>Инфо в рублях</Данные01>
			<Валюта>643</Валюта>
		</Ветка05>
	</Ветка04>
</Заголовок>



Необходимо из него удалить данные /Заголовок/Ветка04/Ветка05/Валюта=643

т.е. на выходе нужен xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<Заголовок>
	<Данные01>Инфо</Данные01>
	<Данные02>Инфо</Данные02>
	<Данные03>Инфо</Данные03>
	<Данные04>Инфо</Данные04>
	<Ветка01>
		<Данные01>Инфо</Данные01>
		<Данные01>Инфо</Данные01>
		<Ветка02>
			<Данные02>Инфо</Данные02>
		</Ветка02>
	</Ветка01>
	<Ветка03>Инфо</Ветка03>
	<Ветка04>
		<Ветка05>
			<Данные01>Инфо в долларах</Данные01>
			<Валюта>840</Валюта>
		</Ветка05>
	</Ветка04>
</Заголовок>
...
Рейтинг: 0 / 0
Удалить часть данных из xml
    #39826487
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gnatochka,
Код: sql
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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
declare @xml xml = N'<Заголовок>
	<Данные01>Инфо</Данные01>
	<Данные02>Инфо</Данные02>
	<Данные03>Инфо</Данные03>
	<Данные04>Инфо</Данные04>
	<Ветка01>
		<Данные01>Инфо</Данные01>
		<Данные01>Инфо</Данные01>
		<Ветка02>
			<Данные02>Инфо</Данные02>
		</Ветка02>
	</Ветка01>
	<Ветка03>Инфо</Ветка03>
	<Ветка04>
		<Ветка05>
			<Данные01>Инфо в рублях</Данные01>
			<Валюта>643</Валюта>
		</Ветка05>
		<Ветка05>
			<Данные01>Инфо в долларах</Данные01>
			<Валюта>840</Валюта>
		</Ветка05>
		<Ветка05>
			<Данные01>Инфо в рублях</Данные01>
			<Валюта>643</Валюта>
		</Ветка05>
		<Ветка05>
			<Данные01>Инфо в рублях</Данные01>
			<Валюта>643</Валюта>
		</Ветка05>
	</Ветка04>
</Заголовок>'

SELECT @xml  
  
-- delete an attribute  
SET @xml.modify(N'  
  delete /Заголовок/Ветка04/Ветка05[./Валюта = "643"]  
')  
SELECT @xml



XML Data Modification Language (XML DML)
...
Рейтинг: 0 / 0
Удалить часть данных из xml
    #39826493
gnatochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buser, спасибо
Вот так получилось
Код: sql
1.
SET @xml.modify('delete /Заголовок/Ветка05[Валюта=643]')  


Подскажите пожалуйста а можно как то переменную использовать?

Код: sql
1.
2.
3.
DECLARE @Cur int
SET @Cur = 840
SET @xml.modify('delete /Заголовок/Ветка05[Валюта=@Cur]')  
...
Рейтинг: 0 / 0
Удалить часть данных из xml
    #39826501
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gnatochka, да автор = sql:variable("@Cur")
...
Рейтинг: 0 / 0
Удалить часть данных из xml
    #39826505
gnatochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buser, спасибо, все получилось.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удалить часть данных из xml
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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