SQL HTML-Datensätze bearbeiten

Pfandfinder

Lieutenant
Registriert
Nov. 2020
Beiträge
621
hallo,

ich habe in meiner SQL Datenbank einige Spalten wo des öfteren Diese Art von HTML vorkommt:

HTML:
<p class="important">irgendein text</p>

ich muss jetzt aber alle diese "Datensätze" bearbeiten durch andere HTML-Tags:

HTML:
<h4>irgendein text</h4>

Das problem ist natürlich, dass die Texte zwischen den HTML-Attributen stehen und </p> auch gerne mal nur mit <p> beginnt, sonst könnte man ja einfach <p class="important"> und </p> ersetzen. wie kann ich per SQL Abfrage diese Änderung durchführen ? geht das irgendwie mit regex ?

Also nochmal quasi zusammengefasst:

Code:
REPLACE "<p class="important">irgendein text der sich unterscheidet</p>" with "<h4>irgendein text der sich unterscheidet</h4>"
 
In SQL ist das sicherlich möglich mit extrem komplexen Queries.

Warum bearbeitest du die Daten nicht einfach außerhalb der Datenbank und schreibst sie danach zurück?
 
  • Gefällt mir
Reaktionen: aronlad und Marco01_809
Hi,

ich würde mit locate das erste Vorkommen von ">" ermitteln und dann mit substring alles rechts davon nehmen. Im Ergebnis suchst Du dann das erste Vorkommen von "<" und nimmst alles links davon.
Das Endergebnis ist dann der Text ohne die HTML-Tags. Dann einfach mit concat die h4-Tags vorne und hinten dranschreiben.
Gruß, Lemmy

Edit: hab' mal schnell gebastelt ;) Syntax muss ggf. an dein verwendetes DBMS angepasst werden.

select MeinText, '<h4>' || substr(substr(MeinText, locate('>',MeinText)+1, length(MeinText)),1,locate('<', substr(MeinText, locate('>',MeinText)+1, length(MeinText)))-1) || '</h4>'Basteltext
from test
1671110397179.png
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Freezedevil
Muss das nur einmal gemacht werden? Von wie vielen Zeilen reden wir?

Wenn innerhalb entsprecher p-Tags nicht noch andere Tags stehen würde ich einfach eine RegEx ala
Code:
<p class="important">[a-zA-Z0-9\-_\s]+<\/p>
benutzen, die nur zusammenhängende Tags findet mit nur normalem Text dazwischen. Dann zur Verifzierung nochmal durchsuchen und alle übrigen Vorkommen von Hand ersetzen oder falls möglich die RegEx erweitern.
 
Ich stimme meinem Vorredner zu. Eigentlich macht es mehr Sinn irgendein Script oder Progamm diese Arbeit machen zu lassen
 
HTML hat nix in der dB zu suchen!!!

SQL kennt kein Regex, allerdings hat der eine oder andere Hersteller eine passende Extension. Die natürlich nicht portabel sind.

Dennoch. Lieber richtig machen. Daten in die dB. Layout in die Anwendung.
 
  • Gefällt mir
Reaktionen: aronlad, mental.dIseASe und floq0r
Zurück
Oben