Jump to content

SQL Replace statement


Direkt zur Lösung Gelöst von testperson,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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!

  • Beste Lösung
Geschrieben

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

  • Danke 1
Geschrieben

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">.

Geschrieben

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. ;)

Geschrieben

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

 

  • Like 1
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...