अल्पविराम से अलग की गई सूचियों को पंक्तियों में बदलने के लिए एक प्रसिद्ध SQL चाल है। बस उस ट्रिक का उपयोग करें, एक DISTINCT
जोड़ें कीवर्ड, और BULK COLLECT
आपके सरणी में परिणाम (मुझे लगता है कि आपका मतलब संग्रह है)।
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;
आउटपुट:
l_array.count = 4
l_array(2) = B