2016-11-11 33 views
0

我想知道如何從全名與也在考慮在中間,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,LEN(名稱) - ( CHARINDEX(」」,名字)-1)),如從表名最後 ;

+0

這可以通過使用SQL Server幫助您 –

+0

如何分析出了名的任何想法? – Rachel

+0

使用上面的查詢@瑞秋 –

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