Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

PL/SQL daftar dipisahkan koma; hapus dups dan masukkan ke dalam array

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghubungkan ke Oracle menggunakan Oracle.ManagedDataAccess

  2. urutan tidak ada ORA-02289

  3. aplikasi asp.net tidak terhubung ke oracle 11g bahkan setelah menginstal klien instan oracle untuk 11g

  4. Instal Driver Attunity Oracle di Visual Studio 2017

  5. Hilangkan hasil duplikat dalam kueri pemilihan yang berisi kolom CLOB