Suchen und ersetzen in MySQL

Hi,

da es kein extra SQL Forum gibt, bin ich hoffentlich hier richtig.

Ich hätte da mal eine Frage zu einer MySQL Datenbank. Gibt es sowas
wie „suchen und ersetzen“ als SQL Befehl?

Folgendes Problem: in meiner Tabelle stehen Links, die so ausssehen:

http;//www.meine-domain.de/filme.php?Filmtitel=Rambo.

Da sich jetzt das Verzeichnis geändert hat, müsste ich nun bei allen
Filmen nur das http;//www.meine-domain.de/ rauslöschen, der Rest,
also /filme.php?Filmtitel=Aliens muss drin bleiben. Gibt es da einen
SQL Befehl? Habe keine Lust, immer wenn sowas passiert, die Tabelle
als CSV zu exportieren und im Textverarbeitungsprogramm zu
bearbeiten, das muss doch irgendwie direkter gehen. Leider stehe ich
noch am Anfang meines SQL Wissens.

Wenn ich jetzt doch hier falsch war, entschuldigt die Störung :smile:

Viele Grüße

Steffi

Hi,

da es kein extra SQL Forum gibt, bin ich hoffentlich hier
richtig.

jein… Datenbanken allgemein triffts imho besser - aber hier ist auch oft fundiertes mysql Wissen zu finden…

Ich hätte da mal eine Frage zu einer MySQL Datenbank. Gibt es
sowas
wie „suchen und ersetzen“ als SQL Befehl?

ich persönlich kenne keinen, aber ein kleines Script sollte es ja auch tun…

Folgendes Problem: in meiner Tabelle stehen Links, die so
ausssehen:

http;//www.meine-domain.de/filme.php?Filmtitel=Rambo.

Da sich jetzt das Verzeichnis geändert hat, müsste ich nun bei
allen
Filmen nur das http;//www.meine-domain.de/ rauslöschen, der
Rest,
also /filme.php?Filmtitel=Aliens muss drin bleiben. Gibt es da
einen
SQL Befehl? Habe keine Lust, immer wenn sowas passiert, die
Tabelle
als CSV zu exportieren und im Textverarbeitungsprogramm zu
bearbeiten, das muss doch irgendwie direkter gehen. Leider
stehe ich
noch am Anfang meines SQL Wissens.

hier ein codebeispiel wie Du das wohl schnell mit einem reinigungsscript tun können solltest (quick’n’dirty -> nicht zwangsläufig fehlerfrei)

// Datenbankverbindung aufbauen...
$table = "meintabellenname";
$spaltenname = "name des linkaddy feldes";
$addy = "http;//www.meine-domain.de/";

$sql = "SELECT id, $spaltenname FROM $table WHERE $spaltenname LIKE '$addy%'";
$query = mysql\_query($sql) or die("Fehler beim abarbeiten des sql strings
 $sql");
while ($result = mysql\_fetch\_array($result))
 {
 $newstring = str\_replace($addy,"/",$result[$spaltenname]);
 //hier evtl erst mal überprüfen ob alles richtig gemacht wird bevor das update vorgenommen wird
 $tmpsql = "UPDATE $table SET $spaltenname = '$newstring' WHERE id='$result[id]'";
 mysql\_query($tmpsql) or die("Fehler beim updaten ($newsql)");
 }

HTH

gerade gelesen…
REPLACE(str,from_str,to_str)
Returns the string str with all all occurrences of the string from_str replaced by the string to_str:
mysql> SELECT REPLACE(‚www.mysql.com‘, ‚w‘, ‚Ww‘);
-> ‚WwWwWw.mysql.com

muss ich direkt mal im phpmyqdmin probieren…
müsste ja dann eftl mit nem update auch funktionieren…

1 Like

Hallo Munich Freak!

Danke für die schnelle Hilfe! Ich habe es jetzt geschafft:

UPDATE tabellenname SET spalte=REPLACE(spalte,‚http;//www.meine-
domain.de/‘, ‚‘) WHERE spalte LIKE ‚%http;//www.meine-domain/%

Hah! Das Wochenende ist gerettet!

Vielen Dank nochmal und schöne Grüße aus Forstenried :smile:

Steffi

prima :smile:

Hah! Das Wochenende ist gerettet!

°oO( heute 10h arbeit + Zahnarzt, morgen ca 10h arbeit, evtl Samstag arbeit… )
ja, das WE ist gerettet ^^

Vielen Dank nochmal und schöne Grüße aus Forstenried :smile:

keine Ursache - ich lerne ja auch nur durch praxis :wink:
schöne Grüsse aus Giesing und Kleinhadern *g*

Auch dafür gibt es eine Lösung!

°oO( heute 10h arbeit + Zahnarzt, morgen ca 10h arbeit, evtl
Samstag arbeit… )

DELETE Zahnarzt, arbeit, samstagsarbeit FROM woche, we
INSERT 20days INTO we
DELETE clouds FROM we
INSERT sun, temperature*4 INTO we
INSERT beer INTO admin

Dann musst Du nur noch eine Routine schreiben, damit sich das jede
Woche so wiederholt. Viel Spass!

Viele Grüße

Steffi

lol
wie wäre es damit?

include("databaseconnection4life.php");

function goodweather()
{
mysql\_query("UPDATE tblweather SET temperature='30°', clouds='0', sunshiehours='10', rainatnight='60min'");
}

function nowork()
{
mysql\_query("UPDATE tblwork SET worktoday='0sec', dailyincome='500€'");
mysql\_query("UPDATE tblweek SET currentday='Saturday'");
}

function happyness()
{
mysql\_query("UPDATE happyness='100%', sadness='0%', inlove='100%', love\_response='TRUE', felt\_age='20'");
}

while (each($day\_i\_am\_alive))
{
goodweather();
nowork();
happyness();
}
?\>

)

2 Like

OK, Du hast gewonnen :smile:

Für Dein unentbehrliches Script gibts natürlich auch einen
Bewertungspunkt! Wie konnte ich nur ohne es leben?!! Den dailyincome
Wert habe ich für meine Anforderung ein gaaanz klein wenig angepasst.
Bei zwei, drei Nullen mehr funktioniert das Script bei mir irgendwie
reibungsloser.

Muss weg, in die Maximiliansstrasse ein bischen Sommerklamotten
besorgen, schliesslich ist gerade Samstag und tolles Wetter :wink:

php ich Danke Dir!

Viele Grüße

Steffi

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