powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разбор XML из столбца таблицы через cross apply = бесконечное ожидание
5 сообщений из 5, страница 1 из 1
Разбор XML из столбца таблицы через cross apply = бесконечное ожидание
    #39888940
DevIgo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу разобрать 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
Разбор XML из столбца таблицы через cross apply = бесконечное ожидание
    #39889016
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что, если попробовать разбить на шаги, чтобы попытаться увидеть план? Например, для начала избавиться от try_cast через временную таблицу с полем в декларированном типе xml.
...
Рейтинг: 0 / 0
Разбор XML из столбца таблицы через cross apply = бесконечное ожидание
    #39889031
DevIgo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tunknown,

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

попробуйте вынести подзапрос cross apply в скалярную функцию, в этом случае запрос будет работать как ожидалось.
...
Рейтинг: 0 / 0
Разбор XML из столбца таблицы через cross apply = бесконечное ожидание
    #39889138
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разбор XML из столбца таблицы через cross apply = бесконечное ожидание
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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