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

String dipisahkan koma ke daftar

Ada beberapa solusi yang diposting di Memisahkan String yang Dibatasi topik halaman dokumentasi Oracle.

Salah satunya adalah:

Contoh Data :

CREATE TABLE table_name ( id, list ) AS
SELECT 1, 'a,b,c,d' FROM DUAL UNION ALL -- Multiple items in the list
SELECT 2, 'e'       FROM DUAL UNION ALL -- Single item in the list
SELECT 3, NULL      FROM DUAL UNION ALL -- NULL list
SELECT 4, 'f,,g'    FROM DUAL;          -- NULL item in the list

Kueri :

SELECT t.id,
       v.COLUMN_VALUE AS value,
       ROW_NUMBER() OVER ( PARTITION BY id ORDER BY ROWNUM ) AS lvl
FROM   table_name t,
       TABLE(
         CAST(
           MULTISET(
             SELECT REGEXP_SUBSTR( t.list, '([^,]*)(,|$)', 1, LEVEL, NULL, 1 )
             FROM   DUAL
             CONNECT BY LEVEL < REGEXP_COUNT( t.list, '[^,]*(,|$)' )
           )
           AS SYS.ODCIVARCHAR2LIST
         )
       ) v;

Keluaran :

        ID ITEM           LVL
---------- ------- ----------
         1 a                1 
         1 b                2 
         1 c                3 
         1 d                4 
         2 e                1 
         3 (NULL)           1 
         4 f                1 
         4 (NULL)           2 
         4 g                3 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa menghitung baris yang terpengaruh agregat jika ada beberapa kueri DML di blok PLSQL saya?

  2. Bisakah saya memiliki banyak database di edisi oracle express?

  3. Menjalankan total grup berulang berdasarkan item berdasarkan waktu di Oracle SQL

  4. Apakah dataset jdbc menyimpan semua baris dalam memori jvm

  5. Mengubah kueri ini untuk mengelompokkan baris dan memfilter semua baris selain yang memiliki nilai terkecil