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

Danh sách phân cách bằng dấu phẩy PL / SQL; loại bỏ các lỗi và đưa vào mảng

Có một thủ thuật SQL nổi tiếng để chuyển các danh sách được phân tách bằng dấu phẩy thành các hàng. Chỉ cần sử dụng thủ thuật đó, thêm DISTINCT từ khóa và BULK COLLECT kết quả vào mảng của bạn (tôi cho rằng ý bạn là bộ sưu tập).

DECLARE
  p_test_string   VARCHAR2 (4000) := 'A,B,C,B,B,D';

  TYPE string_array_type IS TABLE OF VARCHAR2 (4000);

  l_array         string_array_type;
BEGIN
  SELECT DISTINCT REGEXP_SUBSTR (p_test_string,
                        '[^,]+',
                        1,
                        LEVEL)
  BULK   COLLECT INTO l_array
  FROM   DUAL
  CONNECT BY REGEXP_SUBSTR (p_test_string,
                            '[^,]+',
                            1,
                            LEVEL)
               IS NOT NULL
  ORDER BY 1;

  DBMS_OUTPUT.put_line ('l_array.count = ' || l_array.COUNT);
  DBMS_OUTPUT.put_line ('l_array(2) = ' || l_array (2));
END;

Đầu ra:

l_array.count = 4
l_array(2) = B


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng cấu trúc dữ liệu nào để sắp xếp dữ liệu này trong PL / SQL?

  2. Tạo tệp PDF với PLSQL trong Oracle

  3. Oracle 12.2.0.1 sắp ra mắt vào năm 2016

  4. Làm thế nào để cắt ngắn tất cả các bảng người dùng?

  5. Tiêu chí ngủ đông cho ngày