Можете ли вы изменить метод ввода на 4 отдельных поля?
Если вы не можете, тогда реализуйте определенный разделитель между различными частями строки? В случаях, когда фамилия состоит из двух слов, не существует детерминированного способа обработки строки, если в качестве разделителя используется [пробел] или любой другой символ, например "-" или ", которые распространены в именах.
Использование разделителя, например '|' :
Declare @FullName varchar(100) = 'FirstName|MidleName|MiddleNameTwo|LastName'
Print 'FirstName = ' + Substring(@FullName,1,charindex('|',@FullName)-1)
SELECT @FullName = Substring(@FullName,charindex('|',@FullName)+1,len(@fullName))
Print 'MiddleName1 = ' + Substring(@FullName,1,charindex('|',@FullName)-1)
SELECT @FullName = Substring(@FullName,charindex('|',@FullName)+1,len(@fullName))
Print 'MiddleName2 = ' + Substring(@FullName,1,charindex('|',@FullName)-1)
SELECT @FullName = Substring(@FullName,charindex('|',@FullName)+1,len(@fullName))
Print 'LastName = ' + @FullName
Это также будет работать, если у вас нет одной из частей, пока вы поддерживаете структуру.
Declare @FullName varchar(100) = 'FirstName|MidleName||LastName'
Print 'FirstName = ' + Substring(@FullName,1,charindex('|',@FullName)-1)
SELECT @FullName = Substring(@FullName,charindex('|',@FullName)+1,len(@fullName))
Print 'MiddleName1 = ' + Substring(@FullName,1,charindex('|',@FullName)-1)
SELECT @FullName = Substring(@FullName,charindex('|',@FullName)+1,len(@fullName))
Print 'MiddleName2 = ' + Substring(@FullName,1,charindex('|',@FullName)-1)
SELECT @FullName = Substring(@FullName,charindex('|',@FullName)+1,len(@fullName))
Print 'LastName = ' + @FullName
22.12.2014