Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите вытащить значение из XML / 6 сообщений из 6, страница 1 из 1
03.05.2018, 16:41
    #39639533
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите вытащить значение из XML
Приветствую.

Есть XML -ка.
Код: sql
1.
2.
3.
4.
5.
6.
DECLARE @xmlData XML ='<?xml version="1.0" encoding="windows-1251" standalone="no"?> 
<messages mes="1" mes_number="108">     
<mesParam>         
<number>7</number>
</mesParam> 
</messages>';




Из которой надо вытащить запросом значение 7 , т.е "number".

И никак не получается это сделать, мучаюсь уже час

Вот так по идее должно работать, но возвращает NULL:

Код: sql
1.
2.
SELECT r.value('@number[1]', 'int') as Id
FROM @xmlData.nodes('/messages/mesParam') as col(r)






При этом, mes_number, например, достается без труда:

Код: sql
1.
2.
SELECT r.value('@mes_number[1]', 'int') as Id
FROM @xmlData.nodes('/messages') as col(r)




Подскажите пожалуйста, как достать поле number из данного XML?
...
Рейтинг: 0 / 0
03.05.2018, 16:44
    #39639536
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите вытащить значение из XML
ssmsВот так по идее должно работать, но возвращает NULL:

Код: sql
1.
2.
SELECT r.value('@number[1]', 'int') as Id
FROM @xmlData.nodes('/messages/mesParam') as col(r)


"Собаку" убери :)
...
Рейтинг: 0 / 0
03.05.2018, 16:45
    #39639537
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите вытащить значение из XML
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE @xmlData XML ='<messages mes="1" mes_number="108">     
<mesParam>         
<number>7</number>
</mesParam> 
</messages>';

SELECT r.value('number[1]', 'int') as Id
FROM @xmlData.nodes('/messages/mesParam[1]') as col(r)
...
Рейтинг: 0 / 0
03.05.2018, 16:46
    #39639541
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите вытащить значение из XML
courtssmsВот так по идее должно работать, но возвращает NULL:

Код: sql
1.
2.
SELECT r.value('@number[1]', 'int') as Id
FROM @xmlData.nodes('/messages/mesParam') as col(r)


"Собаку" убери :)


Так вот где собака зарыта!!!!
...
Рейтинг: 0 / 0
03.05.2018, 16:46
    #39639542
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите вытащить значение из XML
Konst_One
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE @xmlData XML ='<messages mes="1" mes_number="108">     
<mesParam>         
<number>7</number>
</mesParam> 
</messages>';

SELECT r.value('number[1]', 'int') as Id
FROM @xmlData.nodes('/messages/mesParam[1]') as col(r)




То, что надо, большое спасибо!!!
...
Рейтинг: 0 / 0
03.05.2018, 16:49
    #39639548
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите вытащить значение из XML
даа, и если не хочешь вот таких "эксцессов"

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE @xmlData XML ='<?xml version="1.0" encoding="windows-1251" standalone="no"?> 
<messages mes="1" mes_number="108">     
<mesParam>         
<number>7</number>
<number></number>
</mesParam> 
</messages>';

SELECT 
	r.value('number[1]', 'int') as Id1
	,r.value('number[2]', 'int') as Id2
FROM @xmlData.nodes('/messages/mesParam') as col(r)


Id1Id270

лучше записывать так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE @xmlData XML ='<?xml version="1.0" encoding="windows-1251" standalone="no"?> 
<messages mes="1" mes_number="108">     
<mesParam>         
<number>7</number>
<number></number>
</mesParam> 
</messages>';

SELECT 
	r.value('(number/text())[1]', 'int') as Id1
	,r.value('(number/text())[2]', 'int') as Id2
FROM @xmlData.nodes('/messages/mesParam') as col(r)


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


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