Perubahan pada jawaban phonetic_man yang memungkinkan elemen NULL dalam daftar. Format regex dari '[^,]+'
untuk parsing daftar yang dibatasi tidak menangani elemen daftar NULL dan akan mengembalikan nilai yang salah jika ada dan dengan demikian penggunaannya harus dihindari. Ubah yang asli dengan menghapus angka 2 misalnya dan lihat hasilnya. Anda akan mendapatkan '3' di posisi elemen ke-2! Berikut cara menangani NULL dan mengembalikan nilai yang benar untuk elemen:
SELECT TRIM(REGEXP_SUBSTR(str, '(.*?)(,|$)', 1, LEVEL, NULL, 1)) str
FROM ( SELECT '1,,3,4' str FROM dual )
connect by level <= regexp_count(str, ',') + 1;
Lihat di sini untuk info dan bukti lebih lanjut:https://stackoverflow.com/a/31464699/2543416