Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai 1 November 2025. Jika Anda ingin menggunakan Python UDFs, buat UDFs sebelum tanggal tersebut. Python yang ada UDFs akan terus berfungsi seperti biasa. Untuk informasi lebih lanjut, lihat posting blog
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fungsi REGEXP_COUNT
Mencari string untuk pola ekspresi reguler dan mengembalikan integer yang menunjukkan berapa kali pola yang ditentukan terjadi dalam string. Jika tidak ada kecocokan yang ditemukan, maka fungsi kembali0
. Untuk informasi selengkapnya tentang ekspresi reguler, lihat Operator POSIX dan Ekspresi reguler
Sintaksis
REGEXP_COUNT( source_string, pattern [, position [, parameters ] ] )
Argumen
- source_string
-
A
CHAR
atauVARCHAR
string. - pola
-
Sebuah string UTF-8 literal yang mewakili pola ekspresi reguler. Untuk informasi selengkapnya, lihat Operator POSIX.
- posisi
-
(Opsional) Positif
INTEGER
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-nya1
. Jika posisi kurang dari1
, pencarian dimulai pada karakter pertama source_string. Jika posisi lebih besar dari jumlah karakter di source_string, hasilnya adalah.0
- parameter
-
(Opsional) Satu atau lebih string literal yang menunjukkan bagaimana fungsi cocok dengan pola. Nilai yang mungkin adalah sebagai berikut:
-
c - Lakukan pencocokan peka huruf besar/kecil. Standarnya adalah menggunakan pencocokan peka huruf besar/kecil.
-
i — Lakukan pencocokan case-insensitive.
-
p — Menafsirkan pola dengan dialek Perl Compatible Regular Expression (PCRE). Untuk informasi selengkapnya tentang PCRE, lihat Ekspresi Reguler Kompatibel Perl
di Wikipedia.
-
Jenis pengembalian
INTEGER
Contoh
Untuk menghitung berapa kali urutan tiga huruf terjadi, gunakan contoh berikut.
SELECT REGEXP_COUNT('abcdefghijklmnopqrstuvwxyz', '[a-z]{3}');
+--------------+ | regexp_count | +--------------+ | 8 | +--------------+
Untuk menghitung kemunculan string FOX
menggunakan pencocokan case-insensitive, gunakan contoh berikut.
SELECT REGEXP_COUNT('the fox', 'FOX', 1, 'i');
+--------------+ | regexp_count | +--------------+ | 1 | +--------------+
Untuk menggunakan pola yang ditulis dalam dialek PCRE untuk menemukan kata-kata yang mengandung setidaknya satu angka dan satu huruf kecil, gunakan contoh berikut. Contoh menggunakan ?=
operator, yang memiliki konotasi pandangan ke depan tertentu di PCRE. Contoh ini menghitung jumlah kemunculan kata-kata tersebut, dengan pencocokan peka huruf besar/kecil.
SELECT REGEXP_COUNT('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 'p');
+--------------+ | regexp_count | +--------------+ | 2 | +--------------+
Untuk menggunakan pola yang ditulis dalam dialek PCRE untuk menemukan kata-kata yang mengandung setidaknya satu angka dan satu huruf kecil, gunakan contoh berikut. Ini menggunakan ?=
operator, yang memiliki konotasi khusus di PCRE. Contoh ini menghitung jumlah kemunculan kata-kata tersebut, tetapi berbeda dari contoh sebelumnya karena menggunakan pencocokan case-insensitive.
SELECT REGEXP_COUNT('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 'ip');
+--------------+ | regexp_count | +--------------+ | 3 | +--------------+
Contoh berikut menggunakan data dari tabel USERS dalam database sampel TICKIT. Untuk informasi selengkapnya, lihat Database sampel.
Untuk menghitung berapa kali nama domain tingkat atas adalah salah satu org
atauedu
, gunakan contoh berikut.
SELECT email, REGEXP_COUNT(email,'@[^.]*\.(org|edu)') FROM users ORDER BY userid LIMIT 4;
+-----------------------------------------------+--------------+ | email | regexp_count | +-----------------------------------------------+--------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | 1 | | Suspendisse.tristique@nonnisiAenean.edu | 1 | | amet.faucibus.ut@condimentumegetvolutpat.ca | 0 | | sed@lacusUtnec.ca | 0 | +-----------------------------------------------+--------------+