Member 12670240 Ответов: 1

Ввел вопрос в описание


DECLARE @ResponseReceivedData XML
SET @ResponseReceivedData ='<res:response xmlns:res="http://response.display.deduperesults.xsd.ibs.com">
			<res:customerdeduperundisplaylist>
				<res:custdedupedispdtoarray>
					<res:custdedupedispdto codserialno="1" apprefno="81980000015582" datededuperun="2016-01-11 17:23:18" />
				</res:custdedupedispdtoarray>
			</res:customerdeduperundisplaylist>
		</res:response>'


Я хочу выбрать приведенный выше код в табличном виде.
Я попробовал ниже код, но получил ошибку. может ли кто-нибудь помочь в этом отношении.

[edit]добавлен блок кода, закодированный XML - OriginalGriff [/edit]

Что я уже пробовал:

;with xmlnamespaces( DEFAULT 'http://response.display.deduperesults.xsd.ibs.com')
SELECT --List.x.value('(CodSerialNo)[1]','Varchar(255)')
	List.x.value('(/CodSerialNo)[1]','INT') as Codeserial,
	List.x.value('(/AppRefNo)[1]','VarChar(255)') as AppRefNo,   
	List.x.value('(/DateDedupeRun)[1]','VarChar(25)') as DateDedup
FROM @ResponseReceivedData.nodes('(res:/Response/CustomerDedupeRunDisplayList/CustDedupeDispDtoArray/CustDedupeDispDto')) AS List(x)

OriginalGriff

Какая ошибка?
Есть сообщение?

Member 12670240

На самом деле я не получаю ошибку, но данные показывают null в 3 столбцах

OriginalGriff

Тогда не говорите: "Я пробовал ниже кода, но получил ошибку."
Расскажите нам, что происходит, чего вы не ожидали, или не происходит, что вы ожидали.

Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли!

Suvendu Shekhar Giri

Поделитесь также подробностями ошибки.

Member 12670240

На самом деле я не получаю ошибку, но данные показывают null в 3 столбцах

1 Ответов

Рейтинг:
11

Richard Deeming

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

  • Случай ваших XML-элементов не соответствует запросу - возможно, потому, что вы забыли отформатировать свой код, когда отправляли вопрос;
  • Одна закрывающая скобка на .nodes линия должна двигаться внутри строки;
  • Вы указали пространство имен по умолчанию, но пытаетесь использовать префикс пространства имен res:, о котором запрос не знает;
  • Вы пытаетесь извлечь атрибуты из узла, но обращаетесь к ним так, как если бы они были элементами;


Следующий запрос работает для меня:
;WITH xmlnamespaces( DEFAULT 'http://response.display.deduperesults.xsd.ibs.com' )
SELECT 
	List.x.value('(@CodSerialNo)[1]','INT') as Codeserial,
	List.x.value('(@AppRefNo)[1]','VarChar(255)') as AppRefNo,   
	List.x.value('(@DateDedupeRun)[1]','VarChar(25)') as DateDedup
FROM @ResponseReceivedData.nodes('(/Response/CustomerDedupeRunDisplayList/CustDedupeDispDtoArray/CustDedupeDispDto)') AS List(x)

Выход:
Codeserial  AppRefNo         DateDedup
1           81980000015582   2016-01-11 17:23:18