Es gibt einen bekannten SQL-Trick, um kommagetrennte Listen in Zeilen umzuwandeln. Verwenden Sie einfach diesen Trick, fügen Sie ein DISTINCT
hinzu Schlüsselwort und BULK COLLECT
die Ergebnisse in Ihr Array (ich nehme an, Sie meinen Sammlung).
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;
Ausgabe:
l_array.count = 4
l_array(2) = B