phpMyAdmin
 sql >> Datenbank >  >> Database Tools >> phpMyAdmin

SQL-Abfrage zum Ersetzen der Zeichenfolge basierend auf Wildcardt

In MySQL-Version 8.0 und höher können Sie REGEX_REPLACE() Funktion. In Fehlen von das gleiche , können einige komplizierte Zeichenfolgenoperationen durchgeführt werden. Dies basiert auf Ihrem Bestätigung , dass der besagte Teilstring nur einmal in einem Wert vorkommt.

REPLACE() hat keine Unterstützung für Wildcards, Muster, reguläre Ausdrücke usw. Es ersetzt nur ein gegebenes fixed Teilstring mit einem anderen fixed Teilstring, in einem größeren String.

Stattdessen können wir versuchen, Teile des post_content zu extrahieren . Wir werden die führende Teilzeichenfolge vor dem '

Substring_Index() Funktion. In ähnlicher Weise extrahieren wir den nachgestellten Teilstring nach '">

' Portion.

Jetzt können wir einfach Concat() diese Teile, um den erforderlichen post_content zu erhalten . Details zu verschiedenen verwendeten String-Funktionen finden Sie hier:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html

Ich habe auch ein WHERE hinzugefügt Bedingung, sodass wir nur die Zeilen auswählen, die unseren gegebenen Teilstring-Kriterien entsprechen.

UPDATE wp_posts 
SET post_content = 
CONCAT( 
       SUBSTRING_INDEX(post_content, 
                       '<p><span id="more-', 
                       1), 
       SUBSTRING(post_content, 
                 LOCATE('"></span></p>', 
                        post_content, 
                        LOCATE('<p><span id="more-',
                               post_content)
                        ) + 13) -- 13 is character length of "></span></p>
      )
WHERE post_content LIKE '%<p><span id="more-%"></span></p>%';

Abfrage Nr. 1:Daten vor Aktualisierungsvorgängen

SELECT * FROM wp_posts;

| post_content                                            |
| ------------------------------------------------------- |
| adasdaadsa<p><span id="more-35075"></span></p>121324124 |
| 1412123123<p><span id="more-232"></span></p>adasdaafas  |

Abfrage Nr. 2:Daten nach Aktualisierungsvorgängen

SELECT * FROM wp_posts;

| post_content         |
| -------------------- |
| adasdaadsa121324124  |
| 1412123123adasdaafas |

Auf DB Fiddle anzeigen