declare @address table (id int, concat_address varchar(1000));
insert @address values (1, 'Индекс,Регион,Область,Город,Населенный пункт,Улица,Дом,Корпус');
insert @address values (2, 'Индекс 2,Регион 2,Область 2,Город 2, Населенный пункт 2,Улица 2,Дом 2,Корпус 2');
insert @address values (3, 'Индекс 3,Регион 3,Область 3,Город 3,,Улица 3,Дом 3');
insert @address values (4, 'И"н&д<ек''с 4>,,');
insert @address values (5, '');
insert @address values (6, null);
insert @address values (7, 'Индекс 7,Регион 7,Область 7,Город 7, Населенный пункт 7,Улица 7,Дом 7,Корпус 7,Неведомая фигня 7');
select a.id, a.concat_address,
t.xml_value.value('(/items/item)[1]', 'varchar(1000)') as [Индекс],
t.xml_value.value('(/items/item)[2]', 'varchar(1000)') as [Регион],
t.xml_value.value('(/items/item)[3]', 'varchar(1000)') as [Область],
t.xml_value.value('(/items/item)[4]', 'varchar(1000)') as [Город],
t.xml_value.value('(/items/item)[5]', 'varchar(1000)') as [Населенный пункт],
t.xml_value.value('(/items/item)[6]', 'varchar(1000)') as [Улица],
t.xml_value.value('(/items/item)[7]', 'varchar(1000)') as [Дом],
t.xml_value.value('(/items/item)[8]', 'varchar(1000)') as [Корпус]
from @address a
cross apply
( select cast
( '<items> <item>' +
replace
( -- Замена спецсимволов XML
replace(replace(replace(a.concat_address, '&', '&'), '>', '>'), '<', '<'),
',', '</item> <item>'
) +
'</item> </items>' as xml
) as xml_value
) t