Di postgresql, bagaimana cara mengganti semua instance string dalam kolom database?
Katakanlah saya ingin mengganti semua contoh cat
dengan dog
, misalnya.
Apa cara terbaik untuk melakukan ini?
postgresql
replace
menandai
sumber
sumber
Jawaban:
Anda ingin menggunakan fungsi ganti postgresql :
misalnya :
Namun, perlu diketahui bahwa ini akan menjadi pengganti string-ke-string, sehingga 'kategori' akan menjadi 'dogegori'. fungsi regexp_replace dapat membantu Anda menentukan pola kecocokan yang lebih ketat untuk apa yang ingin Anda ganti.
sumber
regexp_replace
Cara Ekspresi Reguler
Jika Anda membutuhkan pencocokan pengganti yang lebih ketat,
regexp_replace
fungsi PostgreSQL dapat dicocokkan dengan menggunakan pola ekspresi reguler POSIX. Itu memiliki sintaks regexp_replace (sumber, pola, penggantian [, bendera]) .Saya akan menggunakan flag
i
dang
untuk pencocokan case-sensitive dan global, masing-masing. Saya juga akan menggunakan\m
dan\M
untuk mencocokkan awal dan akhir kata, masing-masing.Biasanya ada beberapa gotcha ketika melakukan penggantian regex. Mari kita lihat betapa mudahnya mengganti kucing dengan anjing .
Bahkan setelah semua itu, setidaknya ada satu kondisi yang tidak terselesaikan. Misalnya, kalimat yang dimulai dengan "Kucing" akan diganti dengan "anjing" kecil yang mematahkan kapitalisasi kalimat.
Lihat dokumen pencocokan pola PostgreSQL saat ini untuk semua detail.
Perbarui seluruh kolom dengan teks pengganti
Dengan contoh saya, mungkin opsi teraman adalah:
sumber
Anda dapat menggunakan
replace
fungsi iniDefinisi fungsi adalah sebagai berikut (didapat dari sini ):
dan mengembalikan teks yang dimodifikasi. Anda juga dapat memeriksa biola sql ini .
sumber
Berikut adalah contoh yang menggantikan semua instance dari 1 atau lebih karakter spasi putih dalam kolom dengan garis bawah menggunakan ekspresi reguler -
sumber