Я пытаюсь разделить полные имена на фамилию, имя, отчество и суффикс.Я искал, но не мог найти точно такой же формат, как мой.У меня есть следующий код, но я получаю эту ошибку при запуске полного выбора.
Msg 537, Level 16, State 3, Line 1
Invalid length parameter passed to the LEFT or SUBSTRING function.
Таблица SpaceComma получает правильные индексы.Это формат имен, которые у меня есть:
CREATE TABLE #myfullnames (fullName VARCHAR(50))
GO
INSERT #myfullnames VALUES ('BROOK SR, JAMES P.')
INSERT #myfullnames VALUES ('BLOCK JR., BILL V.')
INSERT #myfullnames VALUES ('MOOR, CLODE M.')
INSERT #myfullnames VALUES ('SOUDER III, Laurence R.')
INSERT #myfullnames VALUES ('SOUDER, WILL' )
INSERT #myfullnames VALUES ('KOLIV, Kevin E.')
INSERT #myfullnames VALUES ('Simk, JR. Thomas Todd')
INSERT #myfullnames VALUES ('Polio, Gary R.')
Буду признателен за вашу помощь.Спасибо.
select SplitNames.LastName, SplitNames.FirstName,
SplitNames.MiddleName, SplitNames.Title
from (
select [fullName]
, substring([fullName], 1, SpceTitle-1) as LastName
, substring([fullName], SpceMid,(SpceMid - SpceFirstName - 1)) as FirstName
, substring([fullName], SpaceComma.SpceTitle, (SpaceComma.SpceFirstName -
SpaceComma.SpceTitle)) as Title
, nullif(substring([fullName],SpaceComma.SpceMid+1,100),'') as
MiddleName
from (
select [fullName],
charindex(',',[fullName]) as Comma,
charindex(' ',[fullName]+space(1),charindex(',',[fullName])) as
SpceFirstName,
(len([fullName]) + 1 - charindex(' ',reverse([fullName]), 0)) as
SpceMid,
charindex(' ',[fullName], charindex (' ',reverse([fullName]))) as SpceTitle
from #myfullnames
) SpaceComma
) SplitNames
DROP TABLE #myfullnames