Anmelden

View Full Version : SQL -- trennen von Vorname Nachname



cicero22
13-10-05, 15:24
Ich habe in einem Feld (nennen wir es mal KDNAM)
Vorname und Nachname in einem stehen....
Gehen wir mal davon aus, dass in 90% aller Fälle
die beiden nur durch ein Blank getrennt sind....

Gibt es eine SQL Funktion, mit der ich beide
Namen "sauber" trennen kann - also z.B. nur den
vermeindlichen Nachnamen herausbekomme?

danke
dirk

B.Hauser
13-10-05, 15:55
Ich habe in einem Feld (nennen wir es mal KDNAM)
Vorname und Nachname in einem stehen....
Gehen wir mal davon aus, dass in 90% aller Fälle
die beiden nur durch ein Blank getrennt sind....

Gibt es eine SQL Funktion, mit der ich beide
Namen "sauber" trennen kann - also z.B. nur den
vermeindlichen Nachnamen herausbekomme?

danke
dirk

Eine Funktion gibt es dafür nicht, da musst Du schon etwas tricksen etwa in der Form:


Select KdNam, substr(KDNam, posstr(KDNam, ' ') + 1) as Name,
substr(KDNam, 1, posstr(KDNam, ' ')) as Vorname
from Adresse


Birgitta

cicero22
13-10-05, 16:23
Eine Funktion gibt es dafür nicht, da musst Du schon etwas tricksen etwa in der Form:


Select KdNam, substr(KDNam, posstr(KDNam, ' ') + 1) as Name,
substr(KDNam, 1, posstr(KDNam, ' ')) as Vorname
from Adresse


Birgitta


WOW! Super....
Super Birgitta - Danke...

Fuerchau
13-10-05, 21:35
Allerdings funktioniert das nur, wenn auch mindesten 1 Leerzeichen enthalten ist.
Sollte das Feld (warum auch immer) komplett gefüllt sein, dann bricht der SQL ab.
Daher eine kleine Ergänzung:

Select KdNam,
case when posstr(KDNam, ' ') > 0
then substr(KDNam, 1, posstr(KDNam, ' ')-1)
else ' '
end as Vorname
,
case when posstr(KDNam, ' ') > 0 and posstr(KDNam, ' ') < length(KDNam)
then substr(KDNam, posstr(KDNam, ' ') + 1)
else KDNam
end as Name
from Adresse

cicero22
14-10-05, 06:24
Also - das ist echt mit das beste was ich bisher so gesehen habe - VIELEN DANK IHR BEIDEN..... DANKE!