APPLY
ваш друг.
Запрос:
DECLARE @string VARCHAR(1000) = 'Jose,KENNETH;N'
SELECT
FullName = @string,
FirstName = SUBSTRING(@string,0,a.pos),
LastName = SUBSTRING(@string,a.pos+1,b.pos-a.pos-1),
Middle = SUBSTRING(@string,b.pos+1,8000)
FROM (VALUES(CHARINDEX(',',@string))) AS a(pos)
CROSS APPLY (VALUES(CHARINDEX(';',@string,a.pos))) AS b(pos);
Результаты:
FullName FirstName LastName Middle
------------------ ---------- --------- --------
Jose,KENNETH;N Jose KENNETH N
ОБНОВЛЕНО ПО ОТЗЫВУ ОП
Без использования APPLY
:
SELECT
FullName = @string,
FirstName = SUBSTRING(@string,0,CHARINDEX(',',@string)),
LastName = SUBSTRING(@string,CHARINDEX(',',@string)+1,CHARINDEX(';',@string,CHARINDEX(',',@string))-CHARINDEX(',',@string)-1),
Middle = SUBSTRING(@string,CHARINDEX(';',@string,CHARINDEX(',',@string))+1,8000);