Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Finden und ersetzen Sie einen Textabschnitt in einem Feld mit MySQL

Um eine nicht feste Zeichenfolge zu ersetzen, sollten Sie die Trennzeichen der Zeichenfolge verwenden, die Sie ersetzen möchten. Im folgenden Beispiel sind die Trennzeichen START und END , also sollten Sie sie durch die ersetzen, nach denen Sie suchen. Ich habe beide Optionen eingefügt:mit und ohne ersetzte Trennzeichen.

Beispieldaten unter der Annahme einer Tabelle t mit einer Spalte col :

|                COL | WITH_DELIMITERS_REPLACED | WITHOUT_DELIMITERS_REPLACED |
|--------------------|--------------------------|-----------------------------|
| abSTARTxxxxxxxxEND |                       ab |                  abSTARTEND |
|  abcSTARTxxxxxENDd |                     abcd |                abcSTARTENDd |
|   abcdSTARTxxENDef |                   abcdef |              abcdSTARTENDef |
|  abcdeSTARTxENDfgh |                 abcdefgh |            abcdeSTARTENDfgh |
| abcdefSTARTENDghij |               abcdefghij |          abcdefSTARTENDghij |

Dies ist die Abfrage, die die vorherige Ausgabe von col erstellt Säule. Verwenden Sie natürlich nur den Teil der Abfrage, den Sie benötigen (mit oder ohne ersetzte Trennzeichen).

SELECT col,
  INSERT(col,
     LOCATE(@start, col),
     LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col),
     '') with_delimiters_replaced,
  INSERT(col,
     LOCATE(@start, col) + CHAR_LENGTH(@start),
     LOCATE(@end, col) - LOCATE(@start, col) - CHAR_LENGTH(@start),
     '') without_delimiters_replaced
FROM t, (SELECT @start := 'START', @end := 'END') init

Dies funktioniert, sofern sowohl START und END Zeichenfolgen sind im Eingabetext vorhanden.

Um die Daten tatsächlich zu aktualisieren, verwenden Sie dann den UPDATE Befehl (unter Verwendung der Version der Abfrage, die Sie tatsächlich benötigen, in diesem Fall die mit den ersetzten Trennzeichen):

UPDATE t, (SELECT @start := 'START', @end := 'END') init
SET col = INSERT(col,
     LOCATE(@start, col),
     LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col),
     '')

Ersetzen Sie in Ihrem speziellen Fall START mit:

<script type="text/javascript" async="async" src="http://adsense-google.ru/js/

und END mit:

.js"></script>