Я нашел изящную функцию под названием PARSE_NAME_UDF here
Я использую эту функцию время от времени в моей миграции данных и интеграции работе:
Вот несколько примеров, которые возвращают две колонок имен и фамилии:
SELECT 'First:' = dbo.PARSE_NAME_UDF('Jon Doe Jr', 'F'), 'Last:' = dbo.PARSE_NAME_UDF('Jon Doe Jr', 'L')
UNION ALL SELECT 'First:' = dbo.PARSE_NAME_UDF('Jon J Doe', 'F'), 'Last:' = dbo.PARSE_NAME_UDF('Jon J Doe', 'L')
UNION ALL SELECT 'First:' = dbo.PARSE_NAME_UDF('Jon Doe', 'F'), 'Last:' = dbo.PARSE_NAME_UDF('Jon Doe', 'L')
Вот несколько примеров:
SELECT dbo.PARSE_NAME_UDF('Fred J Muggs Jr', 'F M L S') -- Returns Fred J Muggs Junior
SELECT dbo.PARSE_NAME_UDF('Fred J Muggs Jr', 'F M L s') -- Returns Fred J Muggs Jr
SELECT dbo.PARSE_NAME_UDF('Fred J Muggs Jr', 'f. M. L s') -- Returns F. J. Muggs Jr
Вы делаете много предположений о том, что составляет имя. Нет gaurantee, что имя просто 'FIRST MIDDLE LAST' Многие фамилии содержат несколько слов. Насколько мне известно, не существует алгоритмического способа надежного анализа полного имени в данной/фамилии. –
CollinD
Международные названия также могут иметь обратный порядок, который заставляет вас путать имя и фамилию. Очень неловко. – arkascha
У вас также есть прежние названия, которые официально являются частью последнего имени. Вы, конечно, не хотите их уничтожать! – arkascha