select regexp_substr('SMITH,ALLEN,WARD,JONES','[^,]+', 1, level)
from dual
connect by regexp_substr('SMITH,ALLEN,WARD,JONES', '[^,]+', 1, level) is not null;
问问题
326 次
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 回答