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

Tách chuỗi bằng dòng mới và thêm vào mảng trong PL sql Oracle

Tại sao bạn lại hỏi tên Tom khi bạn đã chào anh ấy?

Dù sao thì .. Có. Bạn có thể sử dụng thao tác tách chuỗi tiêu chuẩn trên chuỗi được phân tách bằng CHR(10) - ký tự dòng mới trong Oracle. Sau đó, sử dụng CASTCOLLECT các hàm để chuyển đổi nó thành một mảng. Ở đây tôi đã sử dụng bộ sưu tập tích hợp sẵn của Oracle sys.OdciVarchar2List . Trong khối PL / SQL của mình, bạn có thể THU THẬP SỐ LƯỢNG LỚN nó vào bất kỳ kiểu tập hợp thích hợp nào có thể chứa các phần tử chuỗi.

SQL Fiddle

WITH t (s)
AS (
    SELECT 'Hello Tom
Where are you
What''s your name'
    FROM DUAL
    )
SELECT CAST ( COLLECT ( REGEXP_SUBSTR(s, '[^' || CHR(10)|| ']+', 1, LEVEL) )
                       AS sys.OdciVarchar2List )  as collection
FROM t CONNECT BY LEVEL <= REGEXP_COUNT(s, '[^' || CHR(10)|| ']+')

Kết quả :

|                               COLLECTION |
|------------------------------------------|
| Hello Tom,Where are you,What's your name |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng tạm thời cục bộ trong Oracle 10 (đối với phạm vi của Thủ tục được lưu trữ)

  2. chuyển vào tên bảng dưới dạng tham số plsql

  3. Liệt kê bảng và các cột trong một câu lệnh

  4. Giải thích về toán tử INTERSECT của Oracle

  5. Tạo bảng tên động với Câu lệnh chuẩn bị trong java