ulrichbayern 10 Geschrieben 7. Januar 2013 Melden Geschrieben 7. Januar 2013 Hallo, ich habe in einem Datenfeld z.B. stehen: "Berlin, Berlin, Potsdam, Hamburg" Nun möchte ich das erste "Berlin" durch einen anderen Text ersetzen, das zweite "Berlin" soll aber so bleiben. Sprich: auch wenn der gleiche Begriff mehrmals vorkommt, soll nur einer davon durch einen anderen Text ersetzt werden. Mit der REPLACE-Funktion allein komme ich da ja nicht weit, denn diese ersetzt alle Treffer mit den neuen Werten. Hat jemand eine Idee, wie ich mein Problem lösen könnte ? Vielen Dank, Uli. Zitieren
Sunny61 816 Geschrieben 7. Januar 2013 Melden Geschrieben 7. Januar 2013 Replace("Berlin, Berlin", "neuer Text, Berlin") Zitieren
ulrichbayern 10 Geschrieben 7. Januar 2013 Autor Melden Geschrieben 7. Januar 2013 Hallo Sunny61, vielen Dank für die Antwort. Entschuldigung, ich habe mich unvollständig ausgedrückt, bzw. ein unzureichendes Beispiel verwendet. Es kann auch sein, dass der Text z.B. "Berlin, Potsdam, Hamburg, Berlin" lautet. Dann würde diese Lösung auch nicht helfen ... Zitieren
Sunny61 816 Geschrieben 7. Januar 2013 Melden Geschrieben 7. Januar 2013 Entschuldigung, ich habe mich unvollständig ausgedrückt, bzw. ein unzureichendes Beispiel verwendet. Es kann auch sein, dass der Text z.B. "Berlin, Potsdam, Hamburg, Berlin" lautet. Dann würde diese Lösung auch nicht helfen ... Dann sollte das hier das richtige sein: SELECT LEFT(REPLACE('abcdefg','abc','123'),4) Zitieren
ulrichbayern 10 Geschrieben 7. Januar 2013 Autor Melden Geschrieben 7. Januar 2013 Dann sollte das hier das richtige sein: SELECT LEFT(REPLACE('abcdefg','abc','123'),4) Danke, hilft auch schon weiter, aber "Berlin" bzw. das Suchwort im allgemeinden kann überall im Text mehrfach vorkommen, nicht nur links. Kann auch in der Mitte oder am Ende sein. Das macht es ja für mich so kompliziert ... Egal wo das mehrfache Suchwort vorkommt, es soll immer nur max. 1x ersetzt werden. Zitieren
Sunny61 816 Geschrieben 7. Januar 2013 Melden Geschrieben 7. Januar 2013 Hmm, die ersten beiden Beispiele waren nicht so ganz realistisch. Den Helfern hilft es ungemein die exakte Anforderung zu posten, nicht zu versuchen etwas anzupassen oder zu vereinfachen. In VB/VBA/VB.Net würde ich mit Instr arbeiten, ich weiß nicht ob Du das in SQL so verwenden kannst. Zitieren
hh2000 10 Geschrieben 10. Januar 2013 Melden Geschrieben 10. Januar 2013 Moin, du könntest das mit "PATINDEX" http://msdn.microsoft.com/en-us/library/ms188395.aspx machen. Der Befehl sucht z.B. in einer Spalte eine Zeichenfolge und gibt Dir die erste gefundene Position aus. Dann könntest Du temporär das erste gefundene "Berlin" ersetzen und nochmals den neuen String nach "Berlin" durchsuchen. Findet er nichts mehr weißt du, das "Berlin" nur einmal vorhanden ist (und wirst wohl nichts ersetzen). Findet er noch ein weiteres "Berlin", kann nach Deiner Definition das erste dann ersetzt werden. Um das ganze dann in einem SQL-Befehl unterzubringen, kommt zur Entscheidungsfindung noch "CASE WHEN" ins Spiel ... Gruß Kai Zitieren
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.