View a markdown version of this page

Fungsi REGEXP_REPLACE - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Fungsi REGEXP_REPLACE

Mencari string untuk pola ekspresi reguler dan mengganti setiap kejadian pola dengan string yang ditentukan. REGEXP_REPLACE mirip denganFungsi REPLACE, tetapi dengan REGEXP_REPLACE, Anda dapat mencari string untuk pola ekspresi reguler. Untuk informasi selengkapnya tentang ekspresi reguler, lihat Operator POSIX dan Ek spresi regul er di Wikipedia.

REGEXP_REPLACE mirip dengan Fungsi TRANSLATE danFungsi REPLACE, kecuali bahwa TRANSLATE membuat beberapa substitusi karakter tunggal dan REPLACE mengganti satu seluruh string dengan string lain, sedangkan dengan REGEXP_REPLACE, Anda dapat mencari string untuk pola ekspresi reguler.

Sintaksis

REGEXP_REPLACE( source_string, pattern [, replace_string [ , position [, parameters ] ] ] )

Argumen

sumber_string

Ekspresi A CHAR atau VARCHAR string, seperti nama kolom, untuk dicari.

pola

Sebuah UTF-8 string literal yang mewakili pola ekspresi reguler. Untuk informasi selengkapnya, lihat Operator POSIX.

ganti_string

(Opsional) CHAR Ek VARCHAR spresi A atau string, seperti nama kolom, yang akan menggantikan setiap kejadian pola. Defaultnya adalah string kosong (“”).

posisi

(Opsional) Bilangan bulat positif yang menunjukkan posisi dalam source_string untuk mulai mencari. Posisi didasarkan pada jumlah karakter, bukan byte, sehingga karakter multibyte dihitung sebagai karakter tunggal. Nilai default-nya 1. Jika posisi kurang dari1, pencarian dimulai pada karakter pertama source _string. Jika posisi lebih besar dari jumlah karakter dalam source_string, hasilnya adalah source_string.

parameter

(Opsional) Satu atau lebih literal string yang menunjukkan bagaimana fungsi cocok dengan pola. Nilai yang mungkin adalah sebagai berikut:

  • c - Lakukan pencocokan peka huruf besar/kecil. Defaultnya adalah menggunakan pencocokan peka huruf besar-kecil.

  • i — Lakukan pencocokan yang tidak peka huruf besar/kecil.

  • p — Menafsirkan pola dengan dialek Perl Compatible Regular Expression (PCRE). Untuk informasi selengkapnya tentang PCRE, lihat Perl Compatible Regular Expressions di Wikipedia.

Jenis pengembalian

VARCHAR

Jika pola atau replace_string adalahNULL, fungsi kembali. NULL

Contoh

Untuk mengganti semua kejadian string FOX dalam nilai quick brown fox menggunakan pencocokan case-insensitive, gunakan contoh berikut.

SELECT REGEXP_REPLACE('the fox', 'FOX', 'quick brown fox', 1, 'i'); +---------------------+ | regexp_replace | +---------------------+ | the quick brown fox | +---------------------+

Contoh berikut menggunakan pola yang ditulis dalam dialek PCRE untuk menemukan kata-kata yang berisi setidaknya satu angka dan satu huruf kecil. Ini menggunakan ?= operator, yang memiliki konotasi tampilan ke depan tertentu di PCRE. Untuk mengganti setiap kejadian kata seperti itu dengan nilai[hidden], gunakan contoh berikut.

SELECT REGEXP_REPLACE('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', '[hidden]', 1, 'p'); +-------------------------------+ | regexp_replace | +-------------------------------+ | [hidden] plain A1234 [hidden] | +-------------------------------+

Contoh berikut menggunakan pola yang ditulis dalam dialek PCRE untuk menemukan kata-kata yang berisi setidaknya satu angka dan satu huruf kecil. Ini menggunakan ?= operator, yang memiliki konotasi tampilan ke depan tertentu di PCRE. Untuk mengganti setiap kejadian kata seperti itu dengan nilai[hidden], tetapi berbeda dari contoh sebelumnya karena menggunakan pencocokan yang tidak peka huruf besar-kecil, gunakan contoh berikut.

SELECT REGEXP_REPLACE('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', '[hidden]', 1, 'ip'); +----------------------------------+ | regexp_replace | +----------------------------------+ | [hidden] plain [hidden] [hidden] | +----------------------------------+

Contoh berikut menggunakan data dari tabel USERS dalam database sampel TICKIT. Untuk informasi selengkapnya, lihat Database sampel.

Untuk menghapus nama domain @ dan dari alamat email, gunakan contoh berikut.

SELECT email, REGEXP_REPLACE(email, '@.*\\.(org|gov|com|edu|ca)$') FROM users ORDER BY userid LIMIT 4; +-----------------------------------------------+-----------------------+ | email | regexp_replace | +-----------------------------------------------+-----------------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | Etiam.laoreet.libero | | Suspendisse.tristique@nonnisiAenean.edu | Suspendisse.tristique | | amet.faucibus.ut@condimentumegetvolutpat.ca | amet.faucibus.ut | | sed@lacusUtnec.ca | sed | +-----------------------------------------------+-----------------------+

Untuk mengganti nama domain alamat email denganinternal.company.com, gunakan contoh berikut.

SELECT email, REGEXP_REPLACE(email, '@.*\\.[[:alpha:]]{2,3}','@internal.company.com') FROM users ORDER BY userid LIMIT 4; +-----------------------------------------------+--------------------------------------------+ | email | regexp_replace | +-----------------------------------------------+--------------------------------------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | Etiam.laoreet.libero@internal.company.com | | Suspendisse.tristique@nonnisiAenean.edu | Suspendisse.tristique@internal.company.com | | amet.faucibus.ut@condimentumegetvolutpat.ca | amet.faucibus.ut@internal.company.com | | sed@lacusUtnec.ca | sed@internal.company.com | +-----------------------------------------------+--------------------------------------------+