固定されていない文字列を置き換えるには、置き換えたい文字列の区切り記号を使用する必要があります。次の例では、区切り文字はSTART
とEND
であるため、探しているものに置き換える必要があります。区切り文字を置き換えた場合と置き換えない場合の両方のオプションを含めました。
t
列を持つテーブルを想定したサンプル データcol
:
| COL | WITH_DELIMITERS_REPLACED | WITHOUT_DELIMITERS_REPLACED |
|--------------------|--------------------------|-----------------------------|
| abSTARTxxxxxxxxEND | ab | abSTARTEND |
| abcSTARTxxxxxENDd | abcd | abcSTARTENDd |
| abcdSTARTxxENDef | abcdef | abcdSTARTENDef |
| abcdeSTARTxENDfgh | abcdefgh | abcdeSTARTENDfgh |
| abcdefSTARTENDghij | abcdefghij | abcdefSTARTENDghij |
col
これは、列から前の出力を作成するクエリです。もちろん、クエリの必要な部分のみを使用してください (区切り文字を置き換えても、置き換えなくても)。
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
これは、START
とEND
文字列の両方が入力テキストに存在する場合に機能します。
実際にデータを更新するには、次のUPDATE
コマンドを使用します (実際に必要なバージョンのクエリを使用します。この場合、区切り文字を置き換えたものを使用します)。
UPDATE t, (SELECT @start := 'START', @end := 'END') init
SET col = INSERT(col,
LOCATE(@start, col),
LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col),
'')
特定のケースでは、次のものに置き換えますSTART
。
<script type="text/javascript" async="async" src="http://adsense-google.ru/js/
そしてEND
:
.js"></script>