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

Bagaimana cara mengekstrak grup dari ekspresi reguler di Oracle?

Parameter ketiga dari fungsi REGEXP_SUBSTR menunjukkan posisi dalam string target (de_desc dalam contoh Anda) di mana Anda ingin mulai mencari. Dengan asumsi kecocokan ditemukan di bagian string yang diberikan, itu tidak memengaruhi apa yang dikembalikan.

Di Oracle 11g, ada parameter keenam untuk fungsi tersebut, yang menurut saya adalah apa yang Anda coba gunakan, yang menunjukkan grup tangkapan yang ingin Anda kembalikan. Contoh penggunaan yang tepat adalah:

SELECT regexp_substr('abc[def]ghi', '\[(.+)\]', 1,1,NULL,1) from dual;

Dimana parameter terakhir 1 menunjukkan jumlah grup tangkapan yang ingin Anda kembalikan. Berikut ini tautan ke dokumentasi yang menjelaskan parameter.

10g tampaknya tidak memiliki opsi ini, tetapi dalam kasus Anda, Anda dapat mencapai hasil yang sama dengan:

select substr( match, 2, length(match)-2 ) from (
SELECT regexp_substr('abc[def]ghi', '\[(.+)\]') match FROM dual
);

karena Anda tahu bahwa pertandingan akan memiliki tepat satu karakter berlebih di awal dan akhir. (Atau, Anda dapat menggunakan RTRIM dan LTRIM untuk menghapus tanda kurung dari kedua ujung hasil.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan antara BYTE dan CHAR dalam tipe data kolom

  2. RAWTONHEX() Fungsi di Oracle

  3. Pertimbangan kinerja untuk data sementara di Oracle

  4. Pilih tanpa klausa FROM di Oracle

  5. Permintaan untuk menghitung SUM kumulatif dan total atas gaji