Ada trik SQL terkenal untuk mengubah daftar yang dipisahkan koma menjadi baris. Cukup gunakan trik itu, tambahkan DISTINCT
kata kunci, dan BULK COLLECT
hasilnya ke dalam array Anda (saya berasumsi maksud Anda koleksi).
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;
Keluaran:
l_array.count = 4
l_array(2) = B