Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Chia chuỗi theo vị trí dấu phân cách bằng SQL oracle

Do đó, tôi muốn phân tách chuỗi bằng dấu phân cách xa nhất.

Tôi biết đây là một câu hỏi cũ, nhưng đây là một yêu cầu đơn giản đối với SUBSTR INSTR sẽ đủ. REGEXP vẫn chậm hơn chuyên sâu về CPU hoạt động hơn các hàm subtsr và hướng dẫn cũ.

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

Như bạn đã nói, bạn muốn xa nhất dấu phân cách, nó có nghĩa là dấu phân cách đầu tiên từ đảo ngược .

Cách tiếp cận của bạn ổn, nhưng bạn thiếu start_position trong INSTR . Nếu start_position là phủ định , INSTR hàm đếm lại start_position số ký tự từ cuối chuỗi và sau đó tìm kiếm ở đầu chuỗi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 cách cập nhật dữ liệu bằng truy vấn con trong Oracle SQL

  2. Tự tham gia vào oracle với các ví dụ

  3. Nối kết quả từ một truy vấn SQL trong Oracle

  4. Tại sao sqlplus không kết nối?

  5. Truy vấn gốc ở chế độ ngủ đông - cột char (3)