Ersetzen in SQL

Hallo!

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?

Schon mal im Voraus besten Dank für eure Tipps,

viele Grüße,
Thomas

hi!

update die tabelle mit dem „ersetzen“-befehl (je nachdem, auf welcher datenbank du arbeitest, z.b. oracle: „replace“)

update tabelle
set feld = replace(feld,‚PC1‘,‚PC2‘);

grüße,
tomh

Hi Thomas,

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.

Gruß Ralf

update tabelle
set feld = replace(feld,‚PC1‘,‚PC2‘);

besser ist es so:
update tabelle
set feld = replace(feld,’\PC1’,’\PC2’);

damit auch wirklich nur der richtige teil des pfades ersetzt wird…

1 Like

Hallo!

Danke für eure Antworten, ich hab’s ausprobiert, aber leider scheint es nicht zu funktionieren (wie Erwin bereits gesagt und ich „befürchtet“ habe).

Trotzdem nochmals Dankeschön,
Gruß,
Thomas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Ralf,

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.

Gruß

Sancho

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.


Gruß, Jürgen Auer