您的位置:首页 > 数据库 > Oracle

Oracle level

2016-02-18 11:30 501 查看
1、当需要把一个字符串按某一分隔符分隔后,变为数据列,即把字符串行变为列,可以使用level关键字,例子:

with t as
(select 'a;b;c;d;e' as str from dual)
select level, t.str, substr(t.str, 2 * (level - 1) + 1, 1) as str_signle  from t
connect by
level <= length(t.str) - length(replace(t.str, ';', '')) + 1;


结果如下

1   a;b;c;d;e   a
2   a;b;c;d;e   b
3   a;b;c;d;e   c
4   a;b;c;d;e   d
5   a;b;c;d;e   e


2、当遇到不规则字符串行时,可以使用oracle的正则表达式函数

with t as
(select 'i;am;a;test;hahahhah' as str from dual)
select level, str, regexp_substr(t.str, '[^;]+', 1, level) str_single
from t
connect by level <= length(t.str) - length(replace(t.str, ';', '')) + 1;


结果如下

1   i;am;a;test;hahahhah    i
2   i;am;a;test;hahahhah    am
3   i;am;a;test;hahahhah    a
4   i;am;a;test;hahahhah    test
5   i;am;a;test;hahahhah    hahahhah
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: