Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Komma-getrennte PL/SQL-Liste; dups entfernen und in array einfügen

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