分割串问题

上一篇 / 下一篇  2007-03-08 00:00:00 / 个人分类:oracle开发

一个网友的问题解决记录。

我现在表有个字段是ids并且以@@分割,例如@@123@@234@@567@@.现在有一个select id from project查出来的结果集(如查出来id是123,234,555)现在我想用like匹配这个结果集,只要@@123@@234@@567@@.有一个id匹配出来出的结果集就OK

http://www.itpub.net/showthread.php?s=&threadid=723791


SQL> select * from tt;

ID
------------------------------------------------------------
@@aa@@bb@@cc@@
@@aaa@@bbb@@ccc@@

SQL> create or replace type t_object as object(
2 id varchar2(60),
3 sub_id varchar2(60)
4 );

Type created

SQL> create type t_ret_table is table of t_object;

Type created

SQL> create or replace function f_test(var_str in varchar2) return t_ret_table PIPELINED
2 as
3 var_tmp varchar2(60);
4 var_element varchar2(60);
5 begin
6 for i in (select rtrim(ltrim(id,'@@'),'@@') id from tt) loop
7 var_tmp := i.id;
8 while instr(var_tmp,'@@')>0 loop
9 var_element := substr(var_tmp,1,instr(i.id,'@@')-1);
10 var_tmp := substr(var_tmp,instr(i.id,'@@')+2,length(var_tmp));
11 pipe row(t_object(i.id,var_element));
12 end loop;
13 pipe row(t_object(i.id,var_tmp));
14 end loop;
15 return;
16 end f_test;
17 /

Function created

SQL> select id from table(f_test('a')) where sub_id in (select col from (select 'aa' col from dual union select 'bbb' col from dual union select 'ccc' from dual)) group by id;

ID
------------------------------------------------------------
aa@@bb@@cc
aaa@@bbb@@ccc

SQL>select * from table(f_test('a'));

ID SUB_ID
------------------------------------------------------------ ------------------------------------------------------------
aa@@bb@@cc aa
aa@@bb@@cc bb
aa@@bb@@cc cc
aaa@@bbb@@ccc aaa
aaa@@bbb@@ccc bbb
aaa@@bbb@@ccc ccc

6 rows selected.



SQL>select id from table(f_test('a')) where sub_id in (
select substr(col,instr(col,',',1,rownum)+1,instr(col,',',1,rownum+1)-instr(col,',',1,rownum)-1) col from (
select ','||'aa,aaa,bbb'||',' col from dual
) connect by rownum<length(translate(col,','||col,','))
)
group by id


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-07-26  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 4107
  • 日志数: 1503
  • 建立时间: 2008-04-17
  • 更新时间: 2008-07-22

RSS订阅

Open Toolbar