急急急!在线求一个SQL语句 !

xiexingxin 2011-04-21 04:06:31
要求 用一条SELECT 语句 实现下面这样的功能!

比如一个字符串 v_str:= '北京~上海~成都~天津';


用一条SELECT 语句查询得出结果为:
select 相应的转换(v_str) from dual;

北京
上海
成都
天津








...全文
51 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ssqtjffcu 2011-04-21

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

回复
xiexingxin 2011-04-21
啊! 真的可以啊! 谢谢3楼的太厉害了!
回复
gelyon 2011-04-21

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
---------
北京
上海
成都
天津

回复
xiexingxin 2011-04-21
有没有人会写啊? 求救!
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2011-04-21 04:06
社区公告
暂无公告