brickmaker 3 Geschrieben 20. Februar 2023 Melden Teilen Geschrieben 20. Februar 2023 Hallo zusammen, ich möchte in einer mySQL Datenbank in einer Tabelle etwas ersetzen. Mein bisheriges Statement zum ersetzen sieht so aus. Damit ersetze ist in der Tabelle "booking_information" 1 durch 2. update EE2023_dpcalendar_events set booking_information = REPLACE(booking_information, "1","2") Das klappt auch. Nun habe ich aber in der Tabelle booking_information auch HTML-Code stehen. z.B. das hier: <div class="buchungsinfo_kopf"><br /> Hier muss das <br /> weg. Ich kann aber mit meinem Statement oben das ganze nicht machen, weil bei der Klasse Anführungszeichen sind. Ich kann also NICHT schreiben: update EE2023_dpcalendar_events set booking_information = REPLACE(booking_information, "<div class="buchungsinfo_kopf"><br />","<div class="buchungsinfo_kopf">") Wie würde denn so ein Statement lauten wie in meinem Fall? Danke für Euere Hilfe! Zitieren Link zu diesem Kommentar
Beste Lösung testperson 1.677 Geschrieben 20. Februar 2023 Beste Lösung Melden Teilen Geschrieben 20. Februar 2023 Hi, du musst in diesem Fall die Anführungszeichen / Sonderzeichen escapen: MySQL :: MySQL 8.0 Reference Manual :: 9.1.1 String Literals Zitat Table 9.1 Special Character Escape Sequences Escape Sequence Character Represented by Sequence \0 An ASCII NUL (X'00') character \' A single quote (') character \" A double quote (") character \b A backspace character \n A newline (linefeed) character \r A carriage return character \t A tab character \Z ASCII 26 (Control+Z); see note following the table \\ A backslash (\) character \% A % character; see note following the table \_ A _ character; see note following the table Gruß Jan 1 Zitieren Link zu diesem Kommentar
brickmaker 3 Geschrieben 20. Februar 2023 Autor Melden Teilen Geschrieben 20. Februar 2023 Also wäre dieses Statement dann so korrekt? update EE2023_dpcalendar_events set booking_information = REPLACE(booking_information, "<div class=\"buchungsinfo_kopf\"><br />","<div class=\"buchungsinfo_kopf\">") Ich habe Bedenken, dass er mir beim ersetzen das DURCH genau so in die DB schreibt und dann zeichengenau <div class=\"buchungsinfo_kopf\"> in der DB steht und nicht mehr <div class="buchungsinfo_kopf">. Zitieren Link zu diesem Kommentar
testperson 1.677 Geschrieben 20. Februar 2023 Melden Teilen Geschrieben 20. Februar 2023 Test VM inkl. Test mySQL (evtl. auch mit Backup + Restore der prod mySQL Daten) dürfte doch schnell erledigt (und eine gute "Investition" für die Zukunft) sein. Ansonsten müssten du hier auf jemanden warten, der tatsächlich Ahnung von (my)SQL hat. Da bin ich nämlich raus. ;) Zitieren Link zu diesem Kommentar
brickmaker 3 Geschrieben 20. Februar 2023 Autor Melden Teilen Geschrieben 20. Februar 2023 Ich habs nun anders gemacht. Ich habe mir die Table exportiert, habe sie in Notepad++ editiert, aus der DB gelsöcht und dort wieder importiert. Klappte. Danke trotzdem an alle! 1 Zitieren Link zu diesem Kommentar
testperson 1.677 Geschrieben 20. Februar 2023 Melden Teilen Geschrieben 20. Februar 2023 Das ist dann (scheinbar wohl) auch ein Weg. Danke für die Rückmeldung samt Lösung! Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 20. Februar 2023 Melden Teilen Geschrieben 20. Februar 2023 Moin, wenn du sowas häufiger machen musst (danach hört es sich zumindest an), dann solltest du anhand deiner Datenbank prüfen, wie die Escape-Syntax ist. Sehr wahrscheinlich ist sie so, wie Jan zitiert hat. Wenn du das weißt, musst du nicht mehr rätseln und auch nicht auf Exporte ausweichen. Sobald man Daten einer Produktionsdatenbank manipuliert, ist ein vorheriger Test ohnehin unumgänglich, also solltest du schon im Eigeninteresse für eine Testumgebung sorgen. Eine VM kann dabei hilfreich sein, es wird aber sicher auch ohne gehen. Gruß, Nils 1 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.