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

mySQL replace()を使用して複数のレコードの文字列を置き換えるにはどうすればよいですか?

    非常に一般的なレベルで

    UPDATE MyTable
    
    SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')
    
    WHERE SomeOtherColumn LIKE '%PATTERN%'
    

    あなたの場合、これらはエスケープされたと言いますが、どのようにエスケープされたかを指定していないので、GREATERTHANにエスケープされたとしましょう。

    UPDATE MyTable
    
    SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')
    
    WHERE articleItem LIKE '%GREATERTHAN%'
    

    クエリは実際には文字列内で機能するため、WHERE パターンマッチングを行う句がパフォーマンスを向上させる可能性はほとんどありません。実際には、サーバーでより多くの作業が発生します。このクエリのパフォーマンスを向上させる別のWHERE句のメンバーがない限り、次のように更新するだけです。

    UPDATE MyTable
    SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')
    

    複数のREPLACEをネストすることもできます 呼び出し

    UPDATE MyTable
    SET StringColumn = REPLACE (REPLACE (StringColumn, 'GREATERTHAN', '>'), 'LESSTHAN', '<')
    

    データを保存するときではなく、データを選択するときにもこれを行うことができます。

    したがって、:

    の代わりに

    SELECT MyURLString From MyTable

    あなたができる

    SELECT REPLACE (MyURLString, 'GREATERTHAN', '>') as MyURLString From MyTable



    1. SETSTATISTICSIOからの誤解を招くデータに注意してください

    2. MSSQLデータベーステーブルから最も近い経度と緯度を取得しますか?

    3. カンマ区切りの値を列に分割する方法

    4. Oracle SQL:列は許可されていません