リスト部分の解析にはこれを試してください。 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>
残念ながら、リストを解析するために正規表現を検索すると、nullを処理しない次の形式が常に見つかります。これは、避ける必要があります:'[^,]+'
。詳細については、こちらを参照してください:Oracleでは、カンマ区切りの値を列に分割します。