Hallo,
a)
In der where-Klausel fehlt noch der Name der Spalte, deren Werte mit
‚www.yyyy.de‘ verglichen werden sollen, also
update beispiel
set url = ‚www.xxx.at‘
where url = ‚www.yyyy.de‘
Dieser Befehl würde jetzt in der Tabelle „beispiel“ in allen Zeilen,
deren Spalte „url“ den Wert ‚www.yyyy.de‘ enthält, die Spale „url“ mit dem Wert
‚www.xxx.at‘ überschreiben. URLs, die noch weitere Zeichen enthalten,
z.B. ‚http://www.yyyy.de/test‘ werden durch diesen Befehl NICHT geändert,
weil die WHERE-Klausel nur Zeilen erfasst, in denen EXAKT die
angegebene Zeichenkette steht, kein Zeichen mehr oder weniger.
b)
Will man nur einen Teil einer Zeichenkette ersetzen, dann kann man
für die Suche LIKE und Wildcard-Operatoren wie ‚%‘ verwenden für die
Änderung muss man die gefundene Zeichenkette leider selber auseinander
und wieder zusammen bauen. In Oracle gibt es z.B. eine SUBSTR-Funktion,
mit der man Teile von Zeichenketten extrahieren kann:
update beispiel
set url = ‚http://www.xxx.at‘ || substr(url,length('http://www.yyyy.de’)+1+1))
where url like ‚http://www.yyyy.de%‘
In der set Zeile wird der Anfang der neuen URL ‚http://www.xxx.at‘ mit dem
Ende der alten url (das macht die SUBSTR-Funktion) verbunden.
Die WHERE-Klausel sucht nach allen Zeilen, in denen url mit dem alten Wert
beginnt. Dies funktioniert nur bei urls, die außer dem Suchbegriff noch
mindestens ein weiteres Zeichen enthalten. Bei URLs, die keine weiteren Zeichen
enthalten, sollte folgendes reichen:
update beispiel
set url = ‚http://www.xxx.at‘
where url = ‚http://www.yyyy.de‘
Man kann de Wirkung auch vorab mit einem SELECT testen:
select url as alt, ‚http://www.xxx.at‘ || substr(url,length('http://www.yyyy.de’)+1+1)) as neu
from beispiel
where url like ‚http://www.yyyy.de%‘
Als Ergebnis erhält man eine Tabelle, bei der in der ersten Spalte der unveränderte
url-Wert steht, in der zweiten Spalte der Wert, wie er nach dem Update aussehen würde.
Ist das Ergebnis o.k., kann man das eigentliche Update abschicken.
Die SUBSTR-Funktion gibt es meines Wissens nicht bei allen Datenbanken unter diesem
Namen. Ggf. in der Doku der Datenbank nachschlagen, wie diese Funktion dort heißt.
Der ||-Operator heißt auch manchmal CONCAT(String1, String2).