View a markdown version of this page

Fungsi REGEXP_INSTR - 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_INSTR

Mencari string untuk pola ekspresi reguler dan mengembalikan bilangan bulat yang menunjukkan posisi awal atau posisi akhir dari substring yang cocok. Jika tidak ada kecocokan yang ditemukan, maka fungsi kembali0. REGEXP_INSTR mirip dengan fungsi POSITION, tetapi dengan REGEXP_INSTR, Anda dapat mencari string untuk pola ekspresi reguler. Untuk informasi selengkapnya tentang ekspresi reguler, lihat Operator POSIX dan Ek spresi regul er di Wikipedia.

Sintaksis

REGEXP_INSTR( source_string, pattern [, position [, occurrence] [, option [, parameters ] ] ] ] )

Argumen

sumber_string

Ekspresi string, seperti nama kolom, untuk dicari.

pola

Sebuah UTF-8 string 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-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. 0

kejadian

(Opsional) Positif INTEGER yang menunjukkan kemunculan pola mana yang akan digunakan. REGEXP_INSTR melewatkan pertandingan pertama. occurrence-1 Nilai default-nya 1. Jika kejadian kurang dari 1 atau lebih besar dari jumlah karakter dalam source_string, pencarian diabaikan dan hasilnya adalah. 0

pilihan

(Opsional) Nilai yang menunjukkan apakah akan mengembalikan posisi karakter pertama pertandingan (0) atau posisi karakter pertama setelah akhir pertandingan (1). Nilai bukan nol sama 1 dengan. Nilai default-nya adalah 0.

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.

  • e — Ekstrak substring menggunakan subexpression.

    Jika pola menyer takan subexpression, REGEXP_INSTR mencocokkan substring menggunakan subexpression pertama dalam pola. REGEXP_INSTR hanya mempertimbangkan subexpression pertama; subexpresi tambahan diabaikan. Jika pola tidak memiliki subexpression, REGEXP_INSTR mengabaikan parameter 'e'.

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

Jenis pengembalian

Bilangan Bulat

Contoh

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

Untuk mencari @ karakter yang memulai nama domain dan mengembalikan posisi awal dari kecocokan pertama, gunakan contoh berikut.

SELECT email, REGEXP_INSTR(email, '@[^.]*') FROM users ORDER BY userid LIMIT 4; +-----------------------------------------------+--------------+ | email | regexp_instr | +-----------------------------------------------+--------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | 21 | | Suspendisse.tristique@nonnisiAenean.edu | 22 | | amet.faucibus.ut@condimentumegetvolutpat.ca | 17 | | sed@lacusUtnec.ca | 4 | +-----------------------------------------------+--------------+

Untuk mencari varian kata Center dan mengembalikan posisi awal dari kecocokan pertama, gunakan contoh berikut.

SELECT venuename, REGEXP_INSTR(venuename,'[cC]ent(er|re)$') FROM venue WHERE REGEXP_INSTR(venuename,'[cC]ent(er|re)$') > 0 ORDER BY venueid LIMIT 4; +-----------------------+--------------+ | venuename | regexp_instr | +-----------------------+--------------+ | The Home Depot Center | 16 | | Izod Center | 6 | | Wachovia Center | 10 | | Air Canada Centre | 12 | +-----------------------+--------------+

Untuk menemukan posisi awal dari kejadian pertama stringFOX, menggunakan logika pencocokan case-insensitive, gunakan contoh berikut.

SELECT REGEXP_INSTR('the fox', 'FOX', 1, 1, 0, 'i'); +--------------+ | regexp_instr | +--------------+ | 5 | +--------------+

Untuk menggunakan pola yang ditulis dalam dialek PCRE untuk menemukan kata-kata yang berisi setidaknya satu angka dan satu huruf kecil, gunakan contoh berikut. Ini menggunakan ?= operator, yang memiliki konotasi tampilan ke depan tertentu di PCRE. Contoh ini menemukan posisi awal dari kata kedua tersebut.

SELECT REGEXP_INSTR('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'p'); +--------------+ | regexp_instr | +--------------+ | 21 | +--------------+

Untuk menggunakan pola yang ditulis dalam dialek PCRE untuk menemukan kata-kata yang berisi setidaknya satu angka dan satu huruf kecil, gunakan contoh berikut. Ini menggunakan ?= operator, yang memiliki konotasi tampilan ke depan tertentu di PCRE. Contoh ini menemukan posisi awal dari kata kedua tersebut, tetapi berbeda dari contoh sebelumnya karena menggunakan pencocokan yang tidak peka huruf besar-kecil.

SELECT REGEXP_INSTR('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'ip'); +--------------+ | regexp_instr | +--------------+ | 15 | +--------------+