"Penyalahgunaan" (seperti yang dikatakan Colin 't Hart) dari connected by
memiliki tujuan yang baik di sini:dengan menggunakan REGEXP_SUBSTR
anda hanya dapat mengekstrak satu dari 4 kecocokan (23,34,45,56):regex [^,]+
cocok dengan urutan karakter apa pun dalam string yang tidak mengandung koma.
Jika Anda mencoba menjalankan:
SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+') as "token"
FROM DUAL
Anda akan mendapatkan 23
.
dan jika Anda mencoba menjalankan:
SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,1) as "token"
FROM DUAL
Anda juga akan mendapatkan 23
hanya itu sekarang kami juga mengatur dua parameter tambahan :mulai mencari di posisi 1 (yang merupakan default), dan kembalikan kemunculan pertama.
Sekarang mari kita jalankan:
SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,2) as "token"
FROM DUAL
kali ini kita akan mendapatkan 34
(Kejadian ke-2) dan menggunakan 3
sebagai parameter terakhir akan mengembalikan 45
dan seterusnya.
Penggunaan connected by
bersama dengan level
memastikan Anda akan menerima semua hasil yang relevan (tidak harus dalam urutan aslinya!):
SELECT DISTINCT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) as "token"
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) IS NOT NULL
order by 1
akan kembali:
TOKEN
23
34
45
56
yang tidak hanya berisi semua 4 hasil, tetapi juga memecahnya menjadi baris terpisah di kumpulan hasil!
Jika Anda memainkan dengan itu - mungkin memberi Anda pandangan yang lebih jelas tentang subjek.