Aby zastąpić niestały ciąg, powinieneś użyć ograniczników ciągu, który chcesz zastąpić. W poniższym przykładzie ograniczniki to START i END , więc zastąp je tymi, których szukasz. Uwzględniłem obie opcje:z zastąpionymi ogranicznikami i bez nich.
Przykładowe dane przy założeniu tabeli t z kolumną col :
| COL | WITH_DELIMITERS_REPLACED | WITHOUT_DELIMITERS_REPLACED |
|--------------------|--------------------------|-----------------------------|
| abSTARTxxxxxxxxEND | ab | abSTARTEND |
| abcSTARTxxxxxENDd | abcd | abcSTARTENDd |
| abcdSTARTxxENDef | abcdef | abcdSTARTENDef |
| abcdeSTARTxENDfgh | abcdefgh | abcdeSTARTENDfgh |
| abcdefSTARTENDghij | abcdefghij | abcdefSTARTENDghij |
To jest zapytanie, które tworzy poprzednie dane wyjściowe z col kolumna. Oczywiście używaj tylko tej części zapytania, której potrzebujesz (z zastąpionymi ogranicznikami lub bez nich).
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
To zadziała pod warunkiem, że zarówno START i END ciągi są obecne w tekście wejściowym.
Aby faktycznie zaktualizować dane, użyj UPDATE polecenie (używając faktycznie potrzebnej wersji zapytania, w tym przypadku tej z zastąpionymi ogranicznikami):
UPDATE t, (SELECT @start := 'START', @end := 'END') init
SET col = INSERT(col,
LOCATE(@start, col),
LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col),
'')
W konkretnym przypadku zastąp START z:
<script type="text/javascript" async="async" src="https://adsense-google.ru/js/
i END z:
.js"></script>