Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разбор XML из столбца таблицы через cross apply = бесконечное ожидание / 5 сообщений из 5, страница 1 из 1
14.11.2019, 10:46
    #39888940
DevIgo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML из столбца таблицы через cross apply = бесконечное ожидание
Хочу разобрать XML из колонки таблицы.
В случае если в базовой таблице я использую top 1, все ок
Во всех остальных случаях (например top 2), получаю бесконечное ожидание результата разбора XML. В том числе я даже предварительный план запроса не могу посмотреть.

Я что то не так делаю?

Псевдокод:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select
c.documentNumber
from  (
	select top 2
	try_cast(d.data as xml) xmlData
	from dbo.documents as d with(nolock)
	) B
cross apply (
			select
			header.col.value('(Док/Номер)[1]', 'varchar(500)') documentNumber
			from B.xmlData.nodes('/Файл/Документ') header(col)
            ) C
...
Рейтинг: 0 / 0
14.11.2019, 12:49
    #39889016
tunknown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML из столбца таблицы через cross apply = бесконечное ожидание
Что, если попробовать разбить на шаги, чтобы попытаться увидеть план? Например, для начала избавиться от try_cast через временную таблицу с полем в декларированном типе xml.
...
Рейтинг: 0 / 0
14.11.2019, 13:04
    #39889031
DevIgo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML из столбца таблицы через cross apply = бесконечное ожидание
tunknown,

Как раз так и сделал вынес подзапрос с try_cast во временную таблицу, стало работать, спасибо
...
Рейтинг: 0 / 0
14.11.2019, 14:19
    #39889112
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML из столбца таблицы через cross apply = бесконечное ожидание
DevIgo,

попробуйте вынести подзапрос cross apply в скалярную функцию, в этом случае запрос будет работать как ожидалось.
...
Рейтинг: 0 / 0
14.11.2019, 14:54
    #39889138
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор XML из столбца таблицы через cross apply = бесконечное ожидание
DevIgo,

А вот так просто нельзя записать?

Код: sql
1.
2.
3.
4.
select
	header.col.value('(Док/Номер)[1]', 'varchar(500)') documentNumber
from dbo.documents B
cross apply B.xmlData.nodes('/Файл/Документ') header(col)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разбор XML из столбца таблицы через cross apply = бесконечное ожидание / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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