2014-12-22 161 views
0

美好的一天! 我得到一個「將varchar」這是一個客戶端的全名,並需要拆分這個「VARCHAR」爲:SQL Server單獨:名字,中間名和姓氏

  • 「姓MidleName MiddleNameTwo姓」

  • 需要輸入「姓「在所有 」col1「

  • 需要進入 」在「 COL2」 中間名,MiddleNameTwo

  • 需要 「COL3」 進入 「姓氏」

感謝您的幫助!

+3

請編輯您的問題,提供的名稱是什麼樣子的樣本。另外,您是使用SQL Server(如標題所示)還是MySQL(如標籤所示)? –

+1

這是一組固定的名稱,你知道不會有任何古怪的東西,比如「Mary Jane Vaughan Williams」,其中「Mary Jane」是第一個名字,「Vaughan Williams」是最後一個名字?請記住,名字是瘋狂複雜的,其中許多人不遵循任何你可以想到的一般規則。 –

回答

0

你應該使用子查詢這個任務

INSERT INTO names(firstname, middlename, lastname) 
SELECT substringfunctionofyours(name), substringfunctionofyours(name), 
substringfunctionofyours(name) FROM namefield 

記住這只是一個虛擬的查詢,如果你使用這樣

0

你可以改變輸入法將無法正常工作到4個獨立的領域?

如果你不能,那麼執行字符串的不同部分之間的特定分隔符? 在使用2個單詞構建姓氏的情況下,如果分隔符是[空格]或任何其他字符(如名稱中常見的' - '或''),則沒有確定性方式處理字符串。

使用像一個分隔符 '|' :

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 
0

讓說,你有這樣的"ABC DEF GHI"

的名稱現在你想First NameMiddle Namelast Name從這個字符串。

HERE WE GO

Select 
Substring(Cast('ABC DEF GHI' as nvarchar),0,charindex(' ',Cast('ABC DEF GHI' as nvarchar))) as Col1, 
Substring(Cast('ABC DEF GHI' as nvarchar),charindex(' ',Cast('ABC DEF GHI' as nvarchar)),4)as Col2, 
Substring(Cast('ABC DEF GHI' as nvarchar),8,charindex(' ',Cast('ABC DEF GHI' as nvarchar)))as Col3 

注:This is MSSQL SERVER Query and Substring Function is Built in in MSSQL SERVER