Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
REGEXP_ INSTR fungsi
Mencari string untuk pola ekspresi reguler dan mengembalikan integer yang menunjukkan posisi awal atau posisi akhir dari substring yang cocok. Jika tidak ada kecocokan yang ditemukan, maka fungsi kembali0
. REGEXP_ INSTR mirip dengan POSITIONfungsinya, tetapi memungkinkan Anda mencari string untuk pola ekspresi reguler. Untuk informasi selengkapnya tentang ekspresi reguler, lihat POSIXoperator dan Ekspresi reguler
Sintaks
REGEXP_INSTR( source_string, pattern [, position [, occurrence] [, option [, parameters ] ] ] ] )
Argumen
- source_string
-
Ekspresi string, seperti nama kolom, yang akan dicari.
- pola
-
Sebuah UTF -8 string literal yang mewakili pola ekspresi reguler. Untuk informasi selengkapnya, lihat POSIXoperator.
- 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. Default-nya adalah1
. Jika posisi kurang dari1
, pencarian dimulai pada karakter pertama source_string. Jika posisi lebih besar dari jumlah karakter di source_string, hasilnya adalah.0
- kejadian
-
(Opsional) Positif
INTEGER
yang menunjukkan kemunculan pola mana yang akan digunakan. REGEXP_ INSTR melewatkanoccurrence-1
pertandingan pertama. Default-nya adalah1
. Jika kejadian kurang dari1
atau lebih besar dari jumlah karakter di 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 sama1
dengan. Nilai default-nya adalah0
. - 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. Defaultnya adalah menggunakan pencocokan peka huruf besar/kecil.
-
i — Lakukan pencocokan case-insensitive.
-
e — Ekstrak substring menggunakan subexpression.
Jika pola menyertakan subexpression, REGEXP _ INSTR cocok dengan substring menggunakan subexpression pertama dalam pola. REGEXP_ hanya INSTR mempertimbangkan subexpression pertama; subexpressions tambahan diabaikan. Jika pola tidak memiliki subexpression, REGEXP _ INSTR mengabaikan parameter 'e'.
-
p — Menafsirkan pola dengan dialek Perl Compatible Regular Expression (PCRE). Untuk informasi selengkapnyaPCRE, lihat Ekspresi Reguler Kompatibel Perl
di Wikipedia.
-
Jenis pengembalian
Bilangan Bulat
Contoh
Contoh berikut menggunakan data dari USERS tabel dalam database TICKIT sampel. Untuk informasi selengkapnya, lihat Database sampel.
Untuk mencari @
karakter yang memulai nama domain dan mengembalikan posisi awal 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 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 kemunculan 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 PCRE dialek untuk menemukan kata-kata yang mengandung 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 PCRE dialek untuk menemukan kata-kata yang mengandung 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 case-insensitive.
SELECT REGEXP_INSTR('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'ip');
+--------------+ | regexp_instr | +--------------+ | 15 | +--------------+