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="http://adsense-google.ru/js/
i END
z:
.js"></script>