Bestimmten Bereich in MySQL löschen

LuckySt

Mitglied
Hallo,

mal wieder ich.
Und ich habe auch schon wieder ein kleines Problem.

Und zwar möchte ich gerne meine DB ein wenig aufräumen.
Ich habe da eine Spalte "inhalt".
In dieser Spalte steht bei jedem Eintrag etwas anderes drin und jetzt möchte ich dort überall einen bestimmten Bereich raus nehmen.
Dieser Bereich fängt immer mit [hide] an und hört mit [/hide] auf.
Alles was da dazwischen steht, möchte ich jetzt bei jedem Eintrag entfernen.

Mit
Code:
UPDATE vereine SET inhalt = REPLACE(inhalt,"[hide]*[/hide]"," ");
komme ich nicht weit.
Gibt es da so was wie einen Platzhalter den man an Stelle des * setzen könnte?
 
Mit MySQL nicht ganz einfach. MySQL kennt selber keine Regexp-Replace

Du kannst es ev. mit einer eigenen Funktion lösen
https://github.com/hholzgra/mysql-udf-regexp

Oder ein wenig basteln: http://sqlfiddle.com/#!2/523af/1
SQL:
-- Update einmal durchführen.
-- Dieser Update so häufig durchführen, bis mysqli_affected_rows() 0 zurückgibt
UPDATE test t
SET t.text = 
    CONCAT(
        SUBSTRING_INDEX(t.text, '[hide]', 1),
        SUBSTRING(
            t.text,
            LOCATE('[/hide]', t.text) + LENGTH('[/hide]')
        ) 
    )
WHERE
    t.text REGEXP '\\[hide\\].*\\[/hide\\]';

Oder du iterierst in PHP darüber und machst dort ein preg_replace()
 
Zurück