Вот один подход, который демонстрирует использование CROSS APPLY и немного XML
Пример
Declare @YourTable Table ([SomeCol] varchar(50)) Insert Into @YourTable Values
('1.1')
,('1.10.1')
,('1.2.2.1')
Select A.*
,NewValue=concat(
XMLData.value('/x[1]','varchar(50)')
,'.'+XMLData.value('/x[2]','varchar(50)')
)
From @YourTable A
Cross Apply ( values (Cast('<x>' + replace(SomeCol,'.','</x><x>')+'</x>' as xml)) ) B(XMLData)
Возвращает
SomeCol NewValue
1.1 1.1
1.10.1 1.10
1.2.2.1 1.2
РЕДАКТИРОВАТЬ - просто еще один вариант, используя parsename()
Select A.*
,NewValue=reverse(parsename(reverse(SomeCol),2)
+'.'
+parsename(reverse(SomeCol),1)
)
From @YourTable A