Một thay đổi đối với câu trả lời của phonetic_man sẽ cho phép NULL phần tử trong danh sách. Định dạng regex của '[^,]+'
để phân tích cú pháp các danh sách được phân tách không xử lý các phần tử danh sách NULL và sẽ trả về một giá trị không chính xác nếu tồn tại một giá trị và do đó nên tránh sử dụng nó. Thay đổi bản gốc bằng cách xóa số 2 chẳng hạn và xem kết quả. Bạn sẽ nhận được số '3' ở vị trí của phần tử thứ 2! Đây là một cách xử lý NULL và trả về giá trị chính xác cho phần tử:
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;
Xem tại đây để biết thêm thông tin và bằng chứng: https://stackoverflow.com/a/31464699/2543416