ulrichbayern 10 Geschrieben 7. Januar 2013 Melden Teilen 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 Link zu diesem Kommentar
Sunny61 807 Geschrieben 7. Januar 2013 Melden Teilen Geschrieben 7. Januar 2013 Replace("Berlin, Berlin", "neuer Text, Berlin") Zitieren Link zu diesem Kommentar
ulrichbayern 10 Geschrieben 7. Januar 2013 Autor Melden Teilen 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 Link zu diesem Kommentar
Sunny61 807 Geschrieben 7. Januar 2013 Melden Teilen 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 Link zu diesem Kommentar
ulrichbayern 10 Geschrieben 7. Januar 2013 Autor Melden Teilen 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 Link zu diesem Kommentar
Sunny61 807 Geschrieben 7. Januar 2013 Melden Teilen 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 Link zu diesem Kommentar
hh2000 10 Geschrieben 10. Januar 2013 Melden Teilen 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 Link zu diesem Kommentar
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.