Вам необходимо использовать CROSS APPLY из таблицы в столбец XML
create table sales (customerlist xml)
insert sales select '
<ArrayOfCustomers xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Customer>
<ItemId>1</ItemId>
<Value>Mr Smith</Value>
</Customer>
<Customer>
<ItemId>2</ItemId>
<Value>Mr Bloggs</Value>
</Customer>
</ArrayOfCustomers>'
Ваш запрос:
SELECT
N.C.value('ItemId[1]', 'int') ItemId,
N.C.value('Value[1]', 'varchar(100)') Value
FROM dbo.Sales
CROSS APPLY CustomerList.nodes('//Customer') N(C)
РЕДАКТИРОВАТЬ - примечание
Запрос вышебыл написан быстро, чтобы проиллюстрировать работу со столбцами XML в таблице (многострочный).Из соображений производительности не используйте «// Customer», а вместо этого используйте абсолютный путь «/ ArrayOfCustomers / Customer».«// Клиент» пройдет через весь XML, чтобы найти Customer
узлов в любом месте XML на любом уровне.