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>