Вы можете использовать parsename , если у вас есть строка из четырех частей, разделенных .
.Поскольку у вас есть пять стран, вы можете получить первую с обычной подстрокой, а затем удалить первую страну, замените все ,
на .
и используйте parsename
для остальных
declare @T table(Id int, CountryName varchar(50))
insert into @T values
(1, 'India,Australia,Singapore,Pakistan,Bangaladesh'),
(2, 'Norway,Argentina,Brazil,WestIndies,Burma')
select Id,
substring(CountryName, 1, charindex(',', CountryName)-1) as Country1,
parsename(T.N, 4) as Country2,
parsename(T.N, 3) as Country3,
parsename(T.N, 2) as Country4,
parsename(T.N, 1) as Country5
from @T
cross apply(select replace(stuff(CountryName, 1, charindex(',', CountryName), ''), ',', '.')) as T(N)
Если вы знаетечто у вас 8 стран, вы можете сделать это.
declare @T table(Id int, CountryName varchar(100))
insert into @T values
(1, 'India,Australia,Singapore,Pakistan,Bangaladesh,Denmark,Germany,France'),
(2, 'Norway,Argentina,Brazil,WestIndies,Burma,South Africa,Spain,Portugal')
select Id,
parsename(T1.N, 4) as Country1,
parsename(T1.N, 3) as Country2,
parsename(T1.N, 2) as Country3,
parsename(T1.N, 1) as Country4,
parsename(T2.N, 4) as Country5,
parsename(T2.N, 3) as Country6,
parsename(T2.N, 2) as Country7,
parsename(T2.N, 1) as Country8
from @T
cross apply(select charindex(',', CountryName, charindex(',', CountryName, charindex(',', CountryName, charindex(',', CountryName)+1)+1)+1)) as S(P)
cross apply(select replace(substring(CountryName, 1, S.P-1), ',', '.')) as T1(N)
cross apply(select replace(stuff(CountryName, 1, S.P, ''), ',', '.')) as T2(N)
Если вы не знаете, сколько у вас стран, вам нужно построить запрос динамически. Проклятие и благословения динамического SQL