Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Suchen und löschen von ähnlichen Codeschnipseln

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von michaelxxx, 29 Dezember 2019.

  1. michaelxxx

    michaelxxx Benutzer

    Hi,

    ich muss doch noch mal ein Thema aufgreifen, für das ich bis jetzt noch keine Lösung finden konnte.

    Ich habe in meinem Blog Shortcodes für Galerien, die ich immer (mit einem kleinen Zusatz) 2 mal einfügen muss, damit das Galerie Plugin die Galerie entsprechend darstellt. Das sieht dann z.B. wie folgt aus:

    [galleryj ids="37943,37944,37945,37946"]
    [gallery ids="37943,37944,37945,37946"]

    [galleryj ids="37970,37971,37972,37973,37974,37975,37976,37977"]
    [gallery ids="37970,37971,37972,37973,37974,37975,37976,37977"]

    Mittlerweile braucht man diese doppelt Einbindung dank einer neuen Einstellung aber nicht mehr! Jetzt wäre es natürlich mega aufwendig, meine Galerie Shortcodes in 600 Beiträgen manuell zu bearbeiten :(

    Kann ich das irgendwie in der DB lösen? Ich möchte quasi in allen Beiträgen die Zeile mit galleryj rausschmeißen. Gibt es hierfür einen Befehlt mit MySQL?

    Viele Grüße
    Michael
     
  2. akretschmer

    akretschmer Datenbank-Guru

  3. michaelxxx

    michaelxxx Benutzer

    Ja, für das Thema hatte ich dann auch eine andere Lösung gefunden. Die Frage, ob und wie ich das mit MySQL machen kann, ist aber aus meiner Sicht noch offen ;)
     
  4. akretschmer

    akretschmer Datenbank-Guru

  5. michaelxxx

    michaelxxx Benutzer

    Ok, und das ### aus dem Befehl...

    UPDATE tabelle
    SET feld = REPLACE(feld, '<script src=\'###\' type=\'text/javascript\'></script>', '')

    ...ist dann eine Art Platzhalter, egal was dazwischen steht?

    Ich habe ja immer andere IDs in meinen Shortcodes stehen. Müsste das dann irgendwie so sein?

    UPDATE omp_posts
    SET post_content = REPLACE(post_content '[galleryj ids=\'###\' ]', '')
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Reguläre Ausdrücke sind wohl dann Dein Freund.
     
  7. michaelxxx

    michaelxxx Benutzer

    Ich hab mir mal ein paar Beispiele angesehen, aber als "Nicht-MySQLer" ist auch das nicht einfach für mich auf mein Beispiel umzusetzen/umzuschreiben ;)

    Ist das so richtig?

    UPDATE omp_posts
    SET post_content = REPLACE(post_content, '[galleryj ids=/"."/', '')

    Oder muss es REGEXP_LIKE, REGEXP_SUBSTR oder was ganz anderes sein?
     
  8. akretschmer

    akretschmer Datenbank-Guru

    ha, da haben wir was gemeinsam ;-)

    Code:
    test=*# select * from michaelxxx;
     id |                                                                t                                                               
    ----+---------------------------------------------------------------------------------------------------------------------------------
      3 | [galleryj ids="37943,37944,37945,37946"][gallery ids="37943,37944,37945,37946"]
      4 | [galleryj ids="37970,37971,37972,37973,37974,37975,37976,37977"][gallery ids="37970,37971,37972,37973,37974,37975,37976,37977"]
    (2 rows)
    
    test=*# select id, regexp_replace(t,'\[galleryj[^\]]*','') from michaelxxx;
     id |                          regexp_replace                         
    ----+------------------------------------------------------------------
      3 | ][gallery ids="37943,37944,37945,37946"]
      4 | ][gallery ids="37970,37971,37972,37973,37974,37975,37976,37977"]
    (2 rows)
    
     
  9. michaelxxx

    michaelxxx Benutzer

    Danke für Deine Hilfe :)

    Ich sehe in Deinen Codezeilen, dass der galleryj Teil - bis auf die ] Klammer - wegfällt, aber so ganz verstehe ich den Code noch nicht für meine Umsetzung. Das ist doch kein MySQL Befehl, oder?
     
  10. akretschmer

    akretschmer Datenbank-Guru

    Danke für den Hinweis:

    Code:
    test=*# select id, regexp_replace(t,'\[galleryj[^\]]*\]','') from michaelxxx;
     id |                         regexp_replace                         
    ----+-----------------------------------------------------------------
      3 | [gallery ids="37943,37944,37945,37946"]
      4 | [gallery ids="37970,37971,37972,37973,37974,37975,37976,37977"]
    (2 rows)
    
    regexp_replace() gibt es meines Wissens nach nicht in MySQL, aber noch mal: ich nix MySQL.
     
  11. michaelxxx

    michaelxxx Benutzer

    Ok, schade. Aber dann hilft mir das ja nicht wirklich weiter :)

    Weiß jamend, onb man das auch mit MySQL irgendwie umsetzen kann?
     
  12. akretschmer

    akretschmer Datenbank-Guru

    schon mal die Suchmaschine Deines geringsten Misstrauens befragt?
     
  13. michaelxxx

    michaelxxx Benutzer

    Ich versuche bevor ich etwas poste immer erst die Suchmaschine meines Vertrauens zu befragen. Leider hat sie aber nicht das passende ausgespuckt ;)
     
  14. akretschmer

    akretschmer Datenbank-Guru

Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden