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

SQL:検索/置換しますが、値がレコードに初めて表示される場合のみ

    これは実際にはMySQLで必要なものである必要があります:

    UPDATE wp_post
    SET post_content = CONCAT(REPLACE(LEFT(post_content, INSTR(post_content, 'A')), 'A', 'B'), SUBSTRING(post_content, INSTR(post_content, 'A') + 1));
    

    以前の回答よりも少し複雑です-(INSTR関数を使用して)「A」の最初のインスタンスを見つけてから、SUBSTRINGとINSTRを使用して同じものを見つけるよりも、LEFTをREPLACEと組み合わせて使用​​してそのインスタンスだけを置き換える必要があります'A'は、前の文字列に置き換えてCONCATします。

    以下の私のテストを参照してください:

    SET @string = 'this is A string with A replace and An Answer';
    SELECT @string as actual_string
    , CONCAT(REPLACE(LEFT(@string, INSTR(@string, 'A')), 'A', 'B'), SUBSTRING(@string, INSTR(@string, 'A') + 1)) as new_string;
    

    生産物:

    actual_string                                  new_string
    ---------------------------------------------  ---------------------------------------------
    this is A string with A replace and An Answer  this is B string with A replace and An Answer
    


    1. Wordnetsqliteの同義語とサンプル

    2. MySQL C#非同期メソッドが機能しませんか?

    3. 不正な整数(2147483647)がMySQLに挿入されていますか?

    4. パフォーマンスの問題:最初の遭遇