sql >> Databasteknik >  >> RDS >> Mysql

Hitta och ersätt en del av texten i ett fält med MySQL

För att ersätta en icke-fixerad sträng bör du använda avgränsningarna för strängen du vill ersätta. I följande exempel är avgränsningarna START och END , så du bör ersätta dem med de du letar efter. Jag har inkluderat båda alternativen:med och utan ersatta avgränsare.

Exempeldata förutsatt att en tabell t med kolumnen col :

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

Det här är frågan som skapar den tidigare utdata från col kolumn. Använd naturligtvis bara den del av frågan som du behöver (med eller utan ersatta avgränsare).

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

Detta kommer att fungera förutsatt att både START och END strängar finns i inmatningstexten.

För att faktiskt uppdatera data använd sedan UPDATE kommando (med den version av frågan du faktiskt behöver, i det här fallet den med avgränsare ersatta):

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

I ditt specifika fall ersätt START med:

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

och END med:

.js"></script> 


  1. Möjliga sätt att åtgärda problem med korruption av SQL Server-metadata

  2. join på två främmande nycklar från samma tabell i SQL

  3. Hur man lämnar sammanfogar 2 tabeller på 2 olika databaser?

  4. Hur man ansluter till Oracle med JRuby &JDBC