帮忙看个视图怎么写 XH ITEMS-- ---------1 A1;A2;A3;2 B1;B2;上面是表的2个字段,怎样通过查询语句得到下面的结果XH ITEM-- ----1 A11 A21 A32 B12 B2 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SQL> select * from tt; XH ITEMS---------- --------- 1 A1;A2;A3; 2 B1;B2;SQL> create or replace view v_tt as 2 SELECT distinct 3 xh, 4 substr(ITEMS,3*(LEVEL-1)+1,2) ITEM 5 FROM 6 tt 7 CONNECT BY LEVEL <= (length(ITEMS)/3) 8 order by xh 9 / View createdSQL> select * from v_tt; XH ITEM---------- ---- 1 A1 1 A2 1 A3 2 B1 2 B2 SQL> SQL> select XH, 2 row_number() over(partition by XH order by ITEMS_) SEQ, 3 substr(ITEMS_, - (length(ITEMS_) - instr(ITEMS_, ';', -1))) ITEM 4 from (select XH, substr(ITEMS, 1, instr(ITEMS, ';', 1, rownum) - 1) ITEMS_ 5 from (select '1' XH, 'A1;A2;A3;' ITEMS from dual) 6 connect by instr(ITEMS, ';', 1, rownum) > 0);XH SEQ ITEM-- ---------- ------------------------------------1 1 A11 2 A21 3 A3SQL> 只有1条纪录的,我搞定了,请大牛帮忙看看怎么改成多条纪录的拆分 ITEMS的内容不确定,可以是 A;BBB;汉;XH ITEMS-- ---------1 A;BBB;汉;结果是XH ITEM-- ----1 A1 BBB1 汉这样拆分已经搞定了,请帮忙看看怎么拆多条纪录的! 把前面的代码优化以下,这样带空字符串的也可以拆分出来了。继续等牛牛解惑SQL> SQL> select XH, 2 row_number() over(partition by XH order by ITEMS_) SEQ, 3 substr(ITEMS_, 4 instr(ITEMS_, ';', -1) + 1, 5 length(ITEMS_) - instr(ITEMS_, ';', -1)) ITEM 6 from (select XH, substr(ITEMS, 1, instr(ITEMS, ';', 1, rownum) - 1) ITEMS_ 7 from (select '1' XH, 'A;BBB;;汉;' ITEMS from dual) 8 connect by instr(ITEMS, ';', 1, rownum) > 0);XH SEQ ITEM-- ---------- ------------------------------------1 1 A1 2 BBB1 3 1 4 汉SQL> SQL> select * from tt1; XH ITEMS-- ----------1 A;BBB;;汉;2 B1B;B2B;SQL> select xh, row_number() over(partition by XH order by lev desc) SEQ, item 2 from (select xh, rownum lev, ITEM 3 from (SELECT distinct xh, 4 substr(ITEMS, 5 instr(ITEMS, ';', -1, LEVEL + 1) + 1, 6 instr(ITEMS, ';', -1, LEVEL) - 7 instr(ITEMS, ';', -1, LEVEL + 1) - 8 length(';')) ITEM 9 FROM tt1 10 CONNECT BY LEVEL <= 11 (length(ITEMS) - length(replace(ITEMS, ';')))) 12 order by lev desc); XH SEQ ITEM-- ---------- --------------------1 1 A1 2 BBB1 3 1 4 汉2 1 B2B2 2 B1B 6 rows selected有个问题就是B1B与B2B的顺序颠倒了 oracle 想修改 sequence的当前值 sql排序问题 讨论:如何加快Insert的速度 大家看看这条分页存储过程,10万条数据 可以使用这个吗 [高分]存储过程中的那个out参数都有什么用?请高手给个例子!谢谢! oracle 如何列转行? 学习oracle SG的经验和方法 vb向oracle插入数据 关于数据库效率问题!!!请高手给出意见-急 我的sys口令忘了,这可咋办? 9i登陆客户端登陆不进去了? oracle 安装问题
XH ITEMS
---------- ---------
1 A1;A2;A3;
2 B1;B2;SQL> create or replace view v_tt as
2 SELECT distinct
3 xh,
4 substr(ITEMS,3*(LEVEL-1)+1,2) ITEM
5 FROM
6 tt
7 CONNECT BY LEVEL <= (length(ITEMS)/3)
8 order by xh
9 /
View createdSQL> select * from v_tt;
XH ITEM
---------- ----
1 A1
1 A2
1 A3
2 B1
2 B2
SQL> select XH,
2 row_number() over(partition by XH order by ITEMS_) SEQ,
3 substr(ITEMS_, - (length(ITEMS_) - instr(ITEMS_, ';', -1))) ITEM
4 from (select XH, substr(ITEMS, 1, instr(ITEMS, ';', 1, rownum) - 1) ITEMS_
5 from (select '1' XH, 'A1;A2;A3;' ITEMS from dual)
6 connect by instr(ITEMS, ';', 1, rownum) > 0);XH SEQ ITEM
-- ---------- ------------------------------------
1 1 A1
1 2 A2
1 3 A3SQL> 只有1条纪录的,我搞定了,请大牛帮忙看看怎么改成多条纪录的拆分
-- ---------
1 A;BBB;汉;结果是XH ITEM
-- ----
1 A
1 BBB
1 汉这样拆分已经搞定了,请帮忙看看怎么拆多条纪录的!
SQL> select XH,
2 row_number() over(partition by XH order by ITEMS_) SEQ,
3 substr(ITEMS_,
4 instr(ITEMS_, ';', -1) + 1,
5 length(ITEMS_) - instr(ITEMS_, ';', -1)) ITEM
6 from (select XH, substr(ITEMS, 1, instr(ITEMS, ';', 1, rownum) - 1) ITEMS_
7 from (select '1' XH, 'A;BBB;;汉;' ITEMS from dual)
8 connect by instr(ITEMS, ';', 1, rownum) > 0);XH SEQ ITEM
-- ---------- ------------------------------------
1 1 A
1 2 BBB
1 3
1 4 汉SQL>
XH ITEMS
-- ----------
1 A;BBB;;汉;
2 B1B;B2B;SQL> select xh, row_number() over(partition by XH order by lev desc) SEQ, item
2 from (select xh, rownum lev, ITEM
3 from (SELECT distinct xh,
4 substr(ITEMS,
5 instr(ITEMS, ';', -1, LEVEL + 1) + 1,
6 instr(ITEMS, ';', -1, LEVEL) -
7 instr(ITEMS, ';', -1, LEVEL + 1) -
8 length(';')) ITEM
9 FROM tt1
10 CONNECT BY LEVEL <=
11 (length(ITEMS) - length(replace(ITEMS, ';'))))
12 order by lev desc);
XH SEQ ITEM
-- ---------- --------------------
1 1 A
1 2 BBB
1 3
1 4 汉
2 1 B2B
2 2 B1B
6 rows selected有个问题就是B1B与B2B的顺序颠倒了