# SQL: Wort vorne eingefuegt



## miki77 (27. Jan 2010)

Hallo,

ich habe solche eine Tabelle

Vor_oder_NachName  ----  ganzer Name
---------------------------------------
Mueller                     --- Mike Mueller
Fritz                        ---  Fritz Meyer
Schmidt                   ---  Ralf  Schmidt
Martin                     ---   Martin Tannenberg

Mit welchem SQL-Befehl  finde ich nun heraus, dass nur bei den Nachnamen vorne ein Vorname zugefügt worden ist, also aus 
Mueller --> Mike Mueller 
Schmidt --> Ralf Schmidt

Der umgekehrte Fall, dass den Vornamen hinten ein Nachname zugefügt worden, interessiert nicht

Danke


----------



## Atze (27. Jan 2010)

wat???


----------



## Final_Striker (27. Jan 2010)

Meiner Meinung nach gar nicht. 
Ich denke du musst:
- Vor_oder_NachName und ganzer_Name auslesen
- ganzer_Name auswerten
- Vor_oder_NachName ändern


----------



## miki76 (27. Jan 2010)

mit welchem sql-Statement finde ich diejenigen Datensätze heraus, bei denen ein Vorname hinzugefügt worden ist?


----------



## Atze (27. Jan 2010)

wie willst du denn unterscheiden, ob dem vornamen ein nachname oder dem nachnamen ein vorname hinzugefügt worden ist? das ginge ja nur mit der art versionierung, und du vergleichst die tabelle vor und nach dem ändern. oder check ich was nicht? ansonsten kannst du wohl nur erkennen, dass ein leerzeichen vorhanden ist, dann müssten ja vor-und nachname vorhanden sein. außer natürlich bei zweiten vornamen.

ansonsten versteh ich net, was er will.


----------



## miki777 (27. Jan 2010)

ich dachte zuerst an so was

select *
from meineTabelle
where substr(ganzerName, - length (vor_oder_Nachme), length(vor_oder_Nachme) = vor_oder_Name

kommt aber nicht das heraqus was ich will


----------



## ice-breaker (27. Jan 2010)

1. Normalform :exclaim:


----------



## vladimir75 (27. Jan 2010)

```
select * from meineTabelle
         where substr(ganzerName, length(vor_oder_Nachme)+2, length(vor_oder_Nachme))=vor_oder_Nachme
```
 

```
select * from meineTabelle
         where instr(ganzerName,vor_oder_Nachme,length(vor_oder_Nachme)+2,1)>0
```


```
select *
from meineTabelle
where substr(ganzerName, - (length (vor_oder_Nachme)+2), length(vor_oder_Nachme)) = vor_oder_Name
```

Vladimir


----------



## Tharsonius (28. Jan 2010)

In einer Datenbank speichert man Vorname und Nachname getrennt und dafür den kompletten Namen normalerweise gar nicht.

Ich empfehle Dir dringend Deine Datenbank dahingehend abzuändern und Dich mit der Thematik Normalisierung auseinander zu setzen, wie bereits von ice-breaker vorgeschlagen.

Dazu würde ich eine Spalte Vorname und eine Spalte Nachname anlegen und dann ein kleines Programm einmal drüber laufen lassen, was den Kompletten Namen liest, am Leerzeichen trennt und dann das ganze getrennt in die neuen Spalten schreibt.
Danach kannst Du das ganz bequem per SQL abfragen.


----------



## ARadauer (28. Jan 2010)

so in die richtung?

SELECT * FROM Tabelle WHERE ganzerName LIKE CONCAT(Vor_oder_NachName,'%');


----------

