Gunakan translate()
untuk kasus sederhana ini:
UPDATE tbl SET text = translate(text, '(;<>)', '');
Setiap karakter di parameter kedua yang tidak memiliki pasangan di parameter ketiga diganti dengan yang tidak ada.
Solusi ekspresi reguler dapat terlihat seperti ini:
regexp_replace(text, '[(;<>)]', '', 'g');
Elemen penting adalah parameter ke-4 'g'
untuk menggantikan "global" bukan hanya pertandingan pertama. Parameter kedua adalah kelas karakter.
Anda berada di jalur yang benar, hanya masalah sintaks untuk regexp_replace()
.
Petunjuk tentang UPDATE
Jika Anda tidak mengharapkan semua baris yang akan diubah, saya sangat menyarankan untuk menyesuaikan UPDATE
. Anda pernyataan:
UPDATE tbl
SET text = translate(text, '(;<>)', '')
WHERE text <> translate(text, '(;<>)', '');
Dengan cara ini Anda menghindari pembaruan kosong (mahal). (NULL
tercakup secara otomatis dalam kasus khusus ini.)