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

Pisahkan String berdasarkan posisi pembatas menggunakan Oracle SQL

Oleh karena itu, saya ingin memisahkan string dengan pembatas terjauh.

Saya tahu ini adalah pertanyaan lama, tetapi ini adalah persyaratan sederhana yang SUBSTR dan INSTR akan cukup. REGEXP masih lebih lambat dan padat CPU operasi dari fungsi subtsr dan instr lama.

SQL> WITH DATA AS
  2    ( SELECT 'F/P/O' str FROM dual
  3    )
  4  SELECT SUBSTR(str, 1, Instr(str, '/', -1, 1) -1) part1,
  5         SUBSTR(str, Instr(str, '/', -1, 1) +1) part2
  6  FROM DATA
  7  /

PART1 PART2
----- -----
F/P   O

Seperti yang Anda katakan, Anda menginginkan yang terjauh pembatas, itu berarti pembatas pertama dari kebalikan .

Pendekatan Anda baik-baik saja, tetapi Anda melewatkan start_position di INSTR . Jika start_position negatif , INSTR fungsi menghitung mundur start_position jumlah karakter dari akhir string dan kemudian mencari ke awal string.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mendapatkan kesalahan ORA - 00907 pada hal berikut di ON UPDATE

  2. Cara Menemukan Nama Batasan di Oracle

  3. Temukan Versi/Tambalan Server Weblogic di EBS R12.2/Weblogic Mandiri

  4. Karena SQL Server tidak memiliki paket, apa yang dilakukan programmer untuk menyiasatinya?

  5. bagaimana cara memanggil satu proc yang disimpan dari anther dan memodifikasi refcursor yang dikembalikan?