要求 用一条SELECT 语句 实现下面这样的功能!比如一个字符串 v_str:= '北京~上海~成都~天津';
用一条SELECT 语句查询得出结果为:
select 相应的转换(v_str) from dual;北京
上海
成都
天津
用一条SELECT 语句查询得出结果为:
select 相应的转换(v_str) from dual;北京
上海
成都
天津
调试欢乐多
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
---------
北京
上海
成都
天津
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