Как узнать наименавание элемента xml в sql server?
У меня есть колонка в таблице, которая содержит данные в виде xml (тип данных колонки varchar(max) - поменять тип на xml нельзя)
Пример xml:
<diff>
<Status>
<old>1</old>
<new>2</new>
</Status>
<Source>
<old>307</old>
</Source>
<Home>
<old>23</old>
<new>12</new>
</Home>
</diff>
Как я могу получить такую таблицу?
| ElementName |
|---|
| Status |
| Source |
| Home |
Ответы (1 шт):
Автор решения: Konst
→ Ссылка
declare @t table (x varchar(max))
insert into @t (x) values ('<diff>
<Status>
<old>1</old>
<new>2</new>
</Status>
<Source>
<old>307</old>
</Source>
<Home>
<old>23</old>
<new>12</new>
</Home>
</diff>');
declare @xml xml;
SET @xml = (select cast(x as xml) from @t);
/*
declare @xml xml = '<diff>
<Status>
<old>1</old>
<new>2</new>
</Status>
<Source>
<old>307</old>
</Source>
<Home>
<old>23</old>
<new>12</new>
</Home>
</diff>'
*/
select distinct
n.c.value('fn:local-name(.)', 'varchar(100)') as nodename
from @xml.nodes('//diff/*') n(c)