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

Откуда:
Сообщений: 1
Добрый день!

Возникла такая проблема. Есть таблица в которой в столбец VARCHAR записывается XML строчка:

<form><text id="sbkorustypework" label="Тип работ КОРУС" mandatory="false" sbfield="" sbgroupid="" sbmask="" sbmodify="false" sbstyle="" sbtitle="" sbtype="string" visible="true">Стандартные FLM работы на УС</text><text id="sbkorusclasswork" label="Вид работ КОРУС" mandatory="false" sbfield="" sbgroupid="" sbmask="" sbmodify="false" sbstyle="" sbtitle="" sbtype="string" visible="true">Первичная диагностика сбоев УС по связи</text><text id="sbkorusfuncblock" label="Функциональный блок" mandatory="false" sbfield="" sbgroupid="" sbmask="" sbmodify="false" sbstyle="" sbtitle="" sbtype="string" visible="true">Связь</text></form>


Попробовал значение забрать таким способом:

select [KORUS_NEW] = x.t.value('@id','sbkorustypework') from [options1].nodes('//text') as x(t)


Но ругается что XMLDT-метод "nodes" может быть применен к столбцам типа xml.

Как быть?
24 июн 19, 16:01    [21914205]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг XML из VARCHAR  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
declare @x xml = '<form><text id="sbkorustypework" label="Тип работ КОРУС" mandatory="false" sbfield="" sbgroupid="" sbmask="" sbmodify="false" sbstyle="" sbtitle="" sbtype="string" visible="true">Стандартные FLM работы на УС</text><text id="sbkorusclasswork" label="Вид работ КОРУС" mandatory="false" sbfield="" sbgroupid="" sbmask="" sbmodify="false" sbstyle="" sbtitle="" sbtype="string" visible="true">Первичная диагностика сбоев УС по связи</text><text id="sbkorusfuncblock" label="Функциональный блок" mandatory="false" sbfield="" sbgroupid="" sbmask="" sbmodify="false" sbstyle="" sbtitle="" sbtype="string" visible="true">Связь</text></form>';

select a.value('@id', 'varchar(255)') from @x.nodes('//text') n(a);
24 июн 19, 16:06    [21914210]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг XML из VARCHAR  [new]
invm
Member

Откуда: Москва
Сообщений: 9123
select
 [KORUS_NEW] = x.t.value('@id','sbkorustypework')
from
 [Есть таблица] a cross apply
 (select cast(a.[столбец VARCHAR] as xml)) b(x) cross apply
 b.x.nodes('//text') as x(t);
24 июн 19, 16:14    [21914219]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг XML из VARCHAR  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7401
mairod,

явно привести к нужному типу. Всегда явно приводите к нужному типу для гарантии результата.
24 июн 19, 18:51    [21914352]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить