17,086
社区成员
发帖
与我相关
我的任务
分享
with t as(
select '~北京~上海~成都~天津~' str from dual
)
select substr(str,
instr(str, '~', 1, rownum) + 1,
instr(str, '~', 1, rownum + 1) - instr(str, '~', 1, rownum) - 1)
from t connect by rownum<length(str) - length(replace(str, '~', '')) - 1
with tab as(
select '北京~上海~成都~天津' id from dual
)
--上面是测试数据,sql如下:
select substr('~'||id||'~',instr('~'||id||'~','~',1,level)+1,
instr('~'||id||'~','~',1,level+1)-instr('~'||id||'~','~',1,level)-1) newid
from tab
connect by
level <= length('~'||id||'~') - length(replace('~'||id||'~', '~', ''))-1
--result:
NEWID
---------
北京
上海
成都
天津