Ich hab das Problem, dass ich in meiner Datenbank den Namen in einem String verändern will, und zwar folgendermaßen:
In der Spalte „Pfad“ (Tabelle „TAB“) stehen UNC-Pfade drinnen, also z.B. „\PC1\Daten\Temp“, jetzt würde ich gerne das PC1 auf PC2 ändern, natürlich mit möglichst wenig Aufwand. Das Ergebnis muss demnach so aussehen: „\PC2\Daten\Temp“. Das Problem ist, dass ich den Pfad nicht kenne, sondern nur weiss, dass ich PC1 ersetzen muss.
Gibt’s da einen praktischen sql-Befehl dafür, der mir die Tabelle (oder Spalte, egal) nach PC1 durchsucht und PC1 durch PC2 ersetzt, und sonst alles gleich läßt?
soweit mir bekannt ist, gibt es keine Möglichkeit, beim Ersetzen Teile von Zeichenketten per SQL-Befehl anzusprechen. Objekt beim replace ist grundsätzlich ein Spaltenwert.
soweit mir bekannt ist, gibt es keine Möglichkeit, beim
Ersetzen Teile von Zeichenketten per SQL-Befehl anzusprechen.
Objekt beim replace ist grundsätzlich ein Spaltenwert.
Das stimmt schon. Mittels Stringfunktionen kannst Du aber aus einem Spaltenwert so ziemlich jede beliebige Sauerei machen. Das Ergebnis setzt Du dann wieder in die Spalte - somit hast Du wieder einen Spaltenwert angesprochen.
Wie gesagt, unter Oracle wäre das mit „Replace“ gegangen. Wir wissen aber nicht, welches DBMS hier gefragt ist, also können wir nur rätseln.
Beim MS-SqlServer geht das mit Replace. In Access hängt es von der Version ab - Replace gab es in O97 nicht, wenn ich es richtig in Erinnerung habe, dann hilft InStr und Mid. In Oracle geht dies laut den untenstehenden Beiträgen ebenfalls mit Replace.
Update Tabelle Set Spalte = Replace(Spalte, ‚PC1‘, ‚PC2‘) Where CharIndex(‚PC1‘, Spalte) > 0
Natürlich wird als erstes Argument bei Replace eine Spalte eingesetzt, irgendwo muß man die Spalte ja unterbringen.