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