2016-09-29 3 views
0

Ist es möglich, Textinhalt zwischen zwei bekannten Marken zu löschen?Sql Massen löschen Textinhalt zwischen zwei Markierungen

Ich muss dies tun, um zu vermeiden, 600 Beiträge manuell zu bearbeiten.

Der Inhalt in dieser Form gelöscht werden soll:

[:en] content to remove [:] 

Neben den Inhalt Ich muss auch die Markierungen beseitigen entfernt werden [en] und [:] in den Wordpress Tabellen wp_post und wp_content.

Antwort

0

Was Sie wirklich wollen, ist eine Update-Anweisung, um den Text innerhalb einer Spalte und nicht eine Löschanweisung (entfernt Zeilen) zu entfernen. Sie können mit dieser hässlichen Behelfslösung sie erreichen:

UPDATE yourTable 
SET yourColumn = CONCAT(
    SUBSTR(yourColumn, 1, INSTR(yourColumn, '[:en]') - 1), 
    SUBSTR(yourColumn, INSTR(SUBSTR(yourColumn, INSTR(yourColumn, '[:en]')), '[:]') 
        + INSTR(yourColumn, '[:en]') + 3) 
) 
WHERE yourColumn LIKE '%[:en]%[:]%' 

Die Überlegung dahinter: Finden Sie die Indizes von [: en] und die ersten [:] nach dem [en] (durch den Teil nur nehmen nach [: en], aber dann muss die Länge von dem, was weggeschnitten wurde, um +3 für die Länge von [:] addiert werden) und dann den Teilstring vor und nach und concat nehmen.

als Select-Anweisung neu geschrieben, es zu beweisen funktioniert: SQLFiddle

Verwandte Themen