0
select regexp_substr('SMITH,ALLEN,WARD,JONES','[^,]+', 1, level)
from dual
connect by regexp_substr('SMITH,ALLEN,WARD,JONES', '[^,]+', 1, level) is not null;
4

1 回答 1

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;

请让我们知道结果。

PS 不要使用正则表达式格式'[^,]+'来解析列表,因为如果有 NULL 列表元素,它将返回不正确的值。请参阅此帖子以获取说明:https ://stackoverflow.com/a/31464699/2543416

于 2017-03-24T17:24:42.427 回答