Hãy thử điều này để phân tích cú pháp phần danh sách. Nó xử lý NULLS:
SQL> select regexp_substr('12 3,456,,abc,def', '(.*?)(,|$)', 1, level, null, 1) SPLIT, level
from dual
connect by level <= regexp_count('12 3,456,,abc,def',',') + 1
ORDER BY level;
SPLIT LEVEL
----------------- ----------
12 3 1
456 2
3
abc 4
def 5
SQL>
Thật không may khi bạn tìm kiếm regex cho danh sách phân tích cú pháp, bạn sẽ luôn tìm thấy biểu mẫu này KHÔNG xử lý null và nên tránh:'[^,]+'
. Xem tại đây để biết thêm thông tin:Chia các giá trị được phân tách bằng dấu phẩy thành các cột trong Oracle.