Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

hubungkan dengan klausa di regex_substr

"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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menginstal klien SQL * PLUS di linux

  2. Mengonversi OracleParameter.Value ke Int32

  3. Hibernasi> CLOB> Oracle :(

  4. Menghubungkan ke database Oracle menggunakan SQLAlchemy

  5. Bagaimana cara membuat id dengan AUTO_INCREMENT di Oracle?