sql >> データベース >  >> RDS >> Mysql

MySQLを使用して、フィールド内のテキストの一部を検索して置換します

    固定されていない文字列を置き換えるには、置き換える文字列の区切り文字を使用する必要があります。次の例では、区切り文字は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> 
    


    1. LinuxにSQLServerをインストールする方法

    2. SQLServer-SQLスクリプトの実行を停止または中断します

    3. MariaDB SCHEMA()の説明

    4. 列SQLを動的に作成する