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

Есть таблица в базе, в ней в одном из полей - xml структура. Тип поля xml.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE [dbo].[Task](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[StatusId] [int] NOT NULL,
	[ServiceId] [int] NOT NULL,
	[CreatorId] [int] NOT NULL,
	[Data] [xml] NULL,
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO



data это что-то типа:

<data>
<field id="1171">2018-07-10 00:00</field>
<field id="1172">84</field>
<field id="1173">95</field>
<field id="1174">Документация</field>
<field id="1175">Профилактика</field>
<field id="1190">Иванов Иван Иванович</field>
</data>

В нашей выборке структура везде одинаковая.

Код: sql
1.
SELECT id, statusid, creatorid, data  FROM [dbo].[Task] where serviceid=74


Код: sql
1.
2.
3.
4.
id	statusid	creatorid	data
4983	28	35822	<data><field id="1171">2018-07-10 00:00</field><field id="1172">84</field><field id="1173">95</field><field id="1174">Документация</field><field id="1175">Профилактика</field><field id="1190">Иванов Иван Иванович</field></data>
4978	28	35904	<data><field id="1171">2018-07-11 00:00</field><field id="1172">78</field><field id="1173">714</field><field id="1174">испытание</field><field id="1175">город</field><field id="1190" /></data>
4975	28	35846	<data><field id="1171">2018-07-10 00:00</field><field id="1172">82</field><field id="1173">96</field><field id="1174">Прием</field><field id="1175">Офис</field><field id="1190" /></data>



Требуется получить развернутую табличку, вместе с данными лежащими в xml'е, в виде отдельных столбцов.

Понимаю что не сложно, но в SQL ничего сложнее select from where Не использовал...
А в идеале еще бы выборку ограничить по одному из field id.
Там еще join ы из других таблиц добавятся, дабы Id шники заменить на вменяемые значения но это я уж сам, там хоть понятно в целом.


Всегда Ваш, konst
...
Рейтинг: 0 / 0
select из xml
    #39672249
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select
 t.id,
 t.statusid,
 t.creatorid,
 d.n.value('(field[@id = "1171"])[1]', 'varchar(30)') as field1171,
 d.n.value('(field[@id = "1172"])[1]', 'varchar(30)') as field1172,
 ...
 d.n.value('(field[@id = "1190"])[1]', 'varchar(30)') as field1190
from
 [dbo].[Task] t cross apply
 t.data.nodes('/data') d(n)
where
 t.serviceid=74
...
Рейтинг: 0 / 0
select из xml
    #39672377
superkonst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это магия... :)

Да. Спасибо! То что нужно.
Ну и по крайней мере в целом понятно как делать и куда копать, если результат не устроит.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / select из xml
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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