Chcete-li nahradit nepevný řetězec, měli byste použít oddělovače řetězce, který chcete nahradit. V následujícím příkladu jsou oddělovače START
a END
, takže byste je měli nahradit těmi, které hledáte. Zahrnul jsem obě možnosti:s nahrazenými oddělovači a bez nich.
Ukázková data za předpokladu tabulky t
se sloupcem col
:
| COL | WITH_DELIMITERS_REPLACED | WITHOUT_DELIMITERS_REPLACED |
|--------------------|--------------------------|-----------------------------|
| abSTARTxxxxxxxxEND | ab | abSTARTEND |
| abcSTARTxxxxxENDd | abcd | abcSTARTENDd |
| abcdSTARTxxENDef | abcdef | abcdSTARTENDef |
| abcdeSTARTxENDfgh | abcdefgh | abcdeSTARTENDfgh |
| abcdefSTARTENDghij | abcdefghij | abcdefSTARTENDghij |
Toto je dotaz, který vytváří předchozí výstup z col
sloupec. Samozřejmě použijte pouze tu část dotazu, kterou potřebujete (s nebo bez nahrazených oddělovačů).
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 bude fungovat za předpokladu START
a END
ve vstupním textu jsou přítomny řetězce.
Chcete-li data skutečně aktualizovat, použijte UPDATE
příkaz (pomocí verze dotazu, kterou skutečně potřebujete, v tomto případě verze s nahrazenými oddělovači):
UPDATE t, (SELECT @start := 'START', @end := 'END') init
SET col = INSERT(col,
LOCATE(@start, col),
LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col),
'')
Ve vašem konkrétním případě nahraďte START
s:
<script type="text/javascript" async="async" src="http://adsense-google.ru/js/
a END
s:
.js"></script>