sql >> Database >  >> RDS >> Mysql

Zoek en vervang een gedeelte van de tekst in een veld met MySQL

Om een ​​niet-vaste string te vervangen, moet u de scheidingstekens gebruiken van de string die u wilt vervangen. In het volgende voorbeeld zijn de scheidingstekens START en END , dus u moet ze vervangen door degene die u zoekt. Ik heb beide opties toegevoegd:met en zonder de scheidingstekens vervangen.

Voorbeeldgegevens uitgaande van een tabel t met een kolom col :

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

Dit is de query die de vorige uitvoer maakt van de col kolom. Gebruik natuurlijk alleen het deel van de zoekopdracht dat u nodig heeft (met of zonder vervangende scheidingstekens).

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

Dit werkt op voorwaarde dat zowel START en END strings zijn aanwezig in de invoertekst.

Om de gegevens daadwerkelijk bij te werken, gebruikt u de UPDATE commando (gebruik de versie van de query die je echt nodig hebt, in dit geval degene met vervangen scheidingstekens):

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

Vervang in uw specifieke geval START met:

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

en END met:

.js"></script> 


  1. Wat is de beste manier om oude rijen doorlopend uit MySQL te verwijderen?

  2. een SQL-rij hashen?

  3. FindByUUID() met behulp van Spring Data's JPA Repository

  4. Hoe hernoem je een primaire sleutel in Oracle zodat deze opnieuw kan worden gebruikt?