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

Откуда: Kazan
Сообщений: 47
добрый день.
Помогите пожалуйста с запросом.

Есть xml вида
<Заголовок>
	<Данные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
<Заголовок>
	<Данные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>
</Заголовок>
14 июн 19, 11:15    [21908477]     Ответить | Цитировать Сообщить модератору
 Re: Удалить часть данных из xml  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4451
gnatochka,
+
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)
14 июн 19, 11:26    [21908488]     Ответить | Цитировать Сообщить модератору
 Re: Удалить часть данных из xml  [new]
gnatochka
Member

Откуда: Kazan
Сообщений: 47
buser, спасибо
Вот так получилось
SET @xml.modify('delete /Заголовок/Ветка05[Валюта=643]')  

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

DECLARE @Cur int
SET @Cur = 840
SET @xml.modify('delete /Заголовок/Ветка05[Валюта=@Cur]')  
14 июн 19, 11:43    [21908503]     Ответить | Цитировать Сообщить модератору
 Re: Удалить часть данных из xml  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4451
gnatochka, да
автор
= sql:variable("@Cur")
14 июн 19, 11:47    [21908515]     Ответить | Цитировать Сообщить модератору
 Re: Удалить часть данных из xml  [new]
gnatochka
Member

Откуда: Kazan
Сообщений: 47
buser, спасибо, все получилось.
14 июн 19, 11:51    [21908521]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить