2016-07-07 16 views
1

Ich habe derzeit eine Spalte namens PersonFullName. Es hat Daten in es wie folgt aus:Konvertieren Nachname, Vorname Middleinitial zu verschiedenen Spalten in Sql

PERSONFULLNAME 
Doe, John A 
Doe, Jane M 
Doe, Eric 

Ich wünsche die Daten in diesem Format zu erhalten:

LastName - FirstName - MI 
DOE -  John -  A 
DOE -  Jane -  M 
Doe -  Eric 

Im Folgenden zeigt sich in Ordnung, aber wenn ich hinzufügen, eine mittlere Initiale, die mittleren anfänglichen Länder in der Spalte Vorname.

declare @last as varchar(20) 
declare @first as varchar(20) 
declare @mid as varchar(20) 

declare @name varchar(100) 
select @name = 'Leake, Angela' 

set @last = substring(@name, 1,charindex(', ',@name)-1) 
set @first = LTRIM(substring(@name, charindex(' ',@name),len(@name)-charindex(' ',@name)+1)) 
set @mid = RIGHT(@name, CHARINDEX(' ', REVERSE(@name))-1) 
If (@[email protected]) SET @mid='' 

select @last as 'Last Name', @first as 'First Name',@mid as 'Middle Name' 

Select PERSONFULLNAME FROM Kronos 
+2

Können Sie uns zeigen, was Sie bisher versucht haben? – Matt

+0

Kennzeichnen Sie Ihre Frage mit der von Ihnen verwendeten Datenbank und versuchen Sie, das Problem zu lösen. –

+1

Würde diese Antwort helfen? [Wie zeichne String in Spalten für eine Ansicht] (http://stackoverflow.com/questions/17150593/how-to-split-string-into-columns-for-view-) – Okomikeruko

Antwort

1

Ja okomikeruko, das hat funktioniert. Ich lerne immer noch SQL, also wusste ich nichts über diesen CTE.

Im Folgenden genau haben, was ich brauchte ...

WITH CTE AS 
(
    SELECT PERSONFULLNAME, 
      LEN(PERSONFULLNAME)-LEN(REPLACE(PERSONFULLNAME,' ','')) N 
    FROM Kronos 
) 
SELECT PERSONFULLNAME, 
     PARSENAME(REPLACE(PERSONFULLNAME,' ','.'),N) 'First Name', 
     PARSENAME(REPLACE(PERSONFULLNAME,' ','.'),N+1) 'Last Name', 
     PARSENAME(REPLACE(PERSONFULLNAME,' ','.'),N-1) 'MI' 
FROM CTE 
+0

Ist dies das Zeitmesssystem von Kronos? – scsimon

+0

Sie haben Recht. –

+0

Ok, ich habe vorher in der DB gespielt und erinnere mich an den Namen, der in der Tabelle [PERSON] aufgeteilt wurde. Nicht sicher, wie deine Umgebung aussieht, aber ich war nur neugierig. – scsimon