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

Откуда: Москва
Сообщений: 170
В таблице одно из полей содержит инфо вида:
<max_work_term>
  <length>3</length>
  <unit_id>d</unit_id>
</max_work_term>


как вытащить параметр /length ?
27 июн 17, 18:59    [20594852]     Ответить | Цитировать Сообщить модератору
 Re: распарсить XML  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
DECLARE @x XML = N'
<max_work_term>
  <length>3</length>
  <unit_id>d</unit_id>
</max_work_term>'

SELECT @x.value('(max_work_term/length/text())[1]', 'INT')
27 июн 17, 19:08    [20594865]     Ответить | Цитировать Сообщить модератору
 Re: распарсить XML  [new]
fedoamx
Member

Откуда: Москва
Сообщений: 170
AlanDenton,

Спасибо, а если столбец называется max_term ?
27 июн 17, 19:17    [20594871]     Ответить | Цитировать Сообщить модератору
 Re: распарсить XML  [new]
fedoamx
Member

Откуда: Москва
Сообщений: 170
AlanDenton,

Точнее, это работает по одному значению, а у меня столбец со значениями.
27 июн 17, 19:20    [20594874]     Ответить | Цитировать Сообщить модератору
 Re: распарсить XML  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Что мешает вместо @x в запросе подставить имя столбца?
27 июн 17, 19:29    [20594889]     Ответить | Цитировать Сообщить модератору
 Re: распарсить XML  [new]
Владислав Колосов
Member

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

здесь другой вопрос - что мешает открыть справку на разделе XML и разобрать примеры?
28 июн 17, 10:30    [20595847]     Ответить | Цитировать Сообщить модератору
 Re: распарсить XML  [new]
fedoamx
Member

Откуда: Москва
Сообщений: 170
Владислав Колосов,

подскажите, не догоняю, а как передать параметр ID?

DECLARE @max_work_term XML
SET		@max_work_term = (SELECT t3.max_work_term FROM dbo.vac t3 WHERE [color=red]t3.id = @ID[/color])

SELECT      t1.ID,
		max_work_term.value('(max_work_term/length/text())[1]', 'INT'),
		@max_work_term

FROM	 dbo.vac t1 

WHERE	t1.start_date > '2017-06-01 00:00:00.000'
		[color=red]AND	t1.id=@id[/color]
28 июн 17, 13:23    [20596538]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить