2016-11-11 5 views
0

Мне интересно, как разобрать имя, фамилию из полного имени, а также рассмотреть вопрос о том, чтобы избавиться от среднего имени, Mr, Ms и JR в середине и JR на конец.Выбирайте имя, фамилию от SQL Server

Jon Doe Jr First: Jon Last: Doe 
Jon J Doe First: Jon Last: Doe 
Mr Jon Doe First: Jon Last: Doe 

Спасибо

+2

Вы делаете много предположений о том, что составляет имя. Нет gaurantee, что имя просто 'FIRST MIDDLE LAST' Многие фамилии содержат несколько слов. Насколько мне известно, не существует алгоритмического способа надежного анализа полного имени в данной/фамилии. – CollinD

+0

Международные названия также могут иметь обратный порядок, который заставляет вас путать имя и фамилию. Очень неловко. – arkascha

+0

У вас также есть прежние названия, которые официально являются частью последнего имени. Вы, конечно, не хотите их уничтожать! – arkascha

ответ

0

выберите слева (имя, CHARINDEX (' ' имя)) в качестве первого, подстроку (имя, CHARINDEX ('', имя) +1, длина (имя) - (CHARINDEX ('', name) -1)) как последний from table-name;

+0

это может помочь вам –

+0

любые идеи о том, как разобрать имя с помощью SQL-сервера? – Rachel

+0

использование выше запроса @ Rachel –

0

Я нашел изящную функцию под названием 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 
Смежные вопросы