第一种方法:
select substr(name,1,instr(name,',',1)-1) name from testc
union all
select substr(name,instr(name,',',1)+1,instr(name,',',1,2)-instr(name,',',1)-1) from testc
union all
select substr(name,instr(name,',',1,2)+1,length(name)-instr(name,',',1,2)) from testc
第二种方法:
select substr(','||t1.name||',',instr(','||t1.name | |',',',',1,rn)+1,instr(',' | |t1.name | |',',',',1,rn+1)-instr(',' | |t1.name | |',',',',1,rn)-1) as name
from testc t1,
(
select rownum rn
from all_objects
where rownum <= 10
)t2
where instr(',' | |t1.name | |',',',',1,rn+1) > 0
本文介绍了两种使用SQL从包含逗号分隔值的字段中提取数据的方法。第一种方法通过多次使用`UNION ALL`结合`SUBSTR`和`INSTR`函数实现逐个拆分;第二种方法利用递归思想,结合`ROWNUM`进行循环处理,适用于包含多个值的情况。
7684

被折叠的 条评论
为什么被折叠?



