select regexp_substr('SMITH,ALLEN,WARD,JONES','[^,]+', 1, level)
from dual
connect by regexp_substr('SMITH,ALLEN,WARD,JONES', '[^,]+', 1, level) is not null;
答案 0 :(得分:0)
您没有包含错误,因此我们不知道哪个字符无效。这是一个不同的版本,它执行相同的操作,但处理NULL列表元素。因为它不包含抑扬符,所以看看它是否是罪魁祸首:
select regexp_substr('SMITH,ALLEN,WARD,JONES','(.*?)(,|$)', 1, level, NULL, 1)
from dual
connect by level <= regexp_count('SMITH,ALLEN,WARD,JONES', ',')+1;
请告诉我们结果。
P.S。不要使用正则表达式格式'[^,]+'
来解析列表,因为如果有NULL列表元素,它将返回不正确的值。请参阅此帖子以获取解释:https://stackoverflow.com/a/31464699/2543416