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

Chia chuỗi theo khoảng trắng và ký tự làm dấu phân cách trong Oracle với regexp_substr

SQL Fiddle

Thiết lập lược đồ Oracle 11g R2 :

CREATE TABLE TEST( str ) AS
          SELECT 'Hello world - test-test! - test' FROM DUAL
UNION ALL SELECT 'Hello world2 - test2 - test-test2' FROM DUAL;

Truy vấn 1 :

SELECT Str,
       COLUMN_VALUE AS Occurrence,
       REGEXP_SUBSTR( str ,'(.*?)([[:space:]]-[[:space:]]|$)', 1, COLUMN_VALUE, NULL, 1 ) AS split_value
FROM   TEST,
       TABLE(
         CAST(
           MULTISET(
             SELECT LEVEL
             FROM   DUAL
             CONNECT BY LEVEL < REGEXP_COUNT( str ,'(.*?)([[:space:]]-[[:space:]]|$)' )
           )
           AS SYS.ODCINUMBERLIST
         )
       )

Kết quả :

|                               STR | OCCURRENCE |  SPLIT_VALUE |
|-----------------------------------|------------|--------------|
|   Hello world - test-test! - test |          1 |  Hello world |
|   Hello world - test-test! - test |          2 |   test-test! |
|   Hello world - test-test! - test |          3 |         test |
| Hello world2 - test2 - test-test2 |          1 | Hello world2 |
| Hello world2 - test2 - test-test2 |          2 |        test2 |
| Hello world2 - test2 - test-test2 |          3 |   test-test2 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CẬP NHẬT với CASE và IN - Oracle

  2. 4 cách để thay đổi múi giờ trong Oracle

  3. Làm thế nào để gọi thủ tục lưu trữ Oracle trong Python?

  4. Giới thiệu về xử lý ngoại lệ PL / SQL trong cơ sở dữ liệu Oracle

  5. Loại TABLE hoặc VARRAY ẩn danh trong Oracle