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

正規表現は、文字列内の複数の文字のすべての出現を削除します

    はるかに高速な translate()<を使用します。 / code> この単純なケースの場合:

    UPDATE tbl SET text = translate(text, '(;<>)', '');
    

    3番目のパラメーターに対応するものがない2番目のパラメーターのすべての文字は、何にも置き換えられません。

    正規表現ソリューションは次のようになります。

    regexp_replace(text, '[(;<>)]', '', 'g');
    

    必須要素は4番目のパラメーター'g' 最初の一致だけでなく、「グローバルに」置き換える。 2番目のパラメータは文字クラスです。
    あなたは正しい方向に進んでいました。 regexp_replace()

    UPDATEのヒント

    すべてを期待しない場合 行を変更する場合は、 UPDATEを調整することを強くお勧めします ステートメント:

    UPDATE tbl
    SET    text =  translate(text, '(;<>)', '')
    WHERE  text <> translate(text, '(;<>)', '');
    

    このようにして、(高価な)空の更新を回避します。 ( NULL この特定のケースでは自動的にカバーされます。)




    1. AndroidStudioとPHPを使用したAndroidからWampサーバーへの接続

    2. PostgreSQLは文字列から日付へのキャストでインデックスを作成します

    3. パスワードハッシュとソルティング-これは良い方法ですか?

    4. codeigniterクエリに動的where句を追加する方法