sql >> Base de Datos >  >> RDS >> Mysql

Encuentre y reemplace una porción de texto en un campo usando MySQL

Para reemplazar una cadena no fija, debe usar los delimitadores de la cadena que desea reemplazar. En el siguiente ejemplo, los delimitadores son START y END , por lo que debe reemplazarlos por los que está buscando. He incluido ambas opciones:con y sin los delimitadores reemplazados.

Muestra de datos asumiendo una tabla t con una columna col :

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

Esta es la consulta que crea la salida anterior de col columna. Por supuesto, use solo la parte de la consulta que necesita (con o sin delimitadores reemplazados).

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

Esto funcionará siempre que START y END las cadenas están presentes en el texto de entrada.

Para actualizar los datos, utilice UPDATE comando (usando la versión de la consulta que realmente necesita, en este caso, la que tiene delimitadores reemplazados):

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

En su caso particular, reemplace START con:

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

y END con:

.js"></script>