3

次の文字列を含むテキストを含む列を持つテーブルがあります。

<script type="text/javascript" async="async" src="http://adsense-google.ru/js/XYZ.js"></script> 

XYZ次のようなランダムなテキストはどこにありますか37a90a1fe7512a804347fa3e572c6b86

<script>プレーンな MySQL を使用して、タグの間およびタグを含むすべてを削除するにはどうすればよいですか?

4

3 に答える 3

4

固定されていない文字列を置き換えるには、置き換えたい文字列の区切り記号を使用する必要があります。次の例では、区切り文字はSTARTENDであるため、探しているものに置き換える必要があります。区切り文字を置き換えた場合と置き換えない場合の両方のオプションを含めました。

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

これは、STARTEND文字列の両方が入力テキストに存在する場合に機能します。

実際にデータを更新するには、次の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> 
于 2013-10-15T06:41:31.243 に答える
0

本番データベースのバックアップをダウンロードできます。ローカル マシンに復元します。本番サーバーに preg* プラグインは必要ありません。そのため、すべての作業をローカルで行います。mysql 用の preg* プラグインをインストールします ( https://github.com/mysqludf/lib_mysqludf_pregなど)。クリーニングされたデータベースを本番環境に復元します

于 2013-10-15T05:47:03.580 に答える