sql >> データベース >  >> Database Tools >> phpMyAdmin

ワイルドカードに基づいて文字列を置き換えるSQLクエリ

    MySQLバージョン8.0以降では、<を使用できます。 code> REGEX_REPLACE() 働き。 同じ 、いくつかの複雑な文字列操作を実行できます。これは、確認 、上記のサブ文字列が値に1回だけ出現していること。

    REPLACE() ワイルドカード、パターン、正規表現などはサポートされていません。特定の固定を置き換えるだけです。 別の固定の部分文字列 大きな文字列の部分文字列。

    代わりに、 post_contentの一部を抽出してみることができます 。 '

    Substring_Index() 働き。同様に、'">

    'の後に続く部分文字列を抽出します 部分。

    これで、単純に Concat() 必要なpost_contentを取得するためのこれらの部分 。ここで使用されるさまざまな文字列関数の詳細を見つけることができます: https: //dev.mysql.com/doc/refman/8.0/en/string-functions.html

    WHEREも追加しました 条件。指定された部分文字列の基準に一致する行のみを選択します。

    UPDATE wp_posts 
    SET post_content = 
    CONCAT( 
           SUBSTRING_INDEX(post_content, 
                           '<p><span id="more-', 
                           1), 
           SUBSTRING(post_content, 
                     LOCATE('"></span></p>', 
                            post_content, 
                            LOCATE('<p><span id="more-',
                                   post_content)
                            ) + 13) -- 13 is character length of "></span></p>
          )
    WHERE post_content LIKE '%<p><span id="more-%"></span></p>%';
    

    クエリ#1:更新操作前のデータ

    SELECT * FROM wp_posts;
    
    | post_content                                            |
    | ------------------------------------------------------- |
    | adasdaadsa<p><span id="more-35075"></span></p>121324124 |
    | 1412123123<p><span id="more-232"></span></p>adasdaafas  |
    

    クエリ#2:更新操作後のデータ

    SELECT * FROM wp_posts;
    
    | post_content         |
    | -------------------- |
    | adasdaadsa121324124  |
    | 1412123123adasdaafas |
    

    DBフィドルで表示




    1. FirebirdデータベースをSQLにエクスポートする

    2. 同じIDを持つ行のグループを別のテーブルに転置する

    3. PHP /MYSQLshowデータベース

    4. インポートされたテーブルがphpmyadminに表示されない