目前我遇到oracel数据库中一张表t_order,其中有一个字段存在上层数据合并后存入到这个字段的内容,但也有不合并的,具体情况如下:
表:t_order
字段:ordercode
数据内容:
ordercode
VF090119/VF090118
VF090120
VF090117/VF090116/VF090115
VF090121因为我要控制上层数据如果已经流到t_order中就不能再显示,这样如果根据ordercode进行关联,合并的数据就无法与上层进行关联了,能不能写一个sql语句把合并的ordercode自动拆分,或者提供一个sql函数也可以。
具体显示效果:
ordercode
VF090119
VF090118
VF090120
VF090117
VF090116
VF090115
VF090121
这样我就可以与上层进行关联过滤了。希望哪位兄弟帮忙!!!

解决方案 »

  1.   

    关联的时候用 like 行不?不要用 =
      

  2.   

    SELECT ordercode FROM
        (
    select substr(ordercode,1,8) ordercode from t_order
    union all
    select substr(ordercode,10,8) from t_order
    union all
    select substr(ordercode,19,8) from t_order
        )
     WHERE ordercode IS NOT NULL;
      

  3.   


    create or replace type acc_type as object
    (acc varchar2(50))
    /create or replace type acc_table as table of acc_type
    /create or replace function str2table (acc_str in varchar2) return acc_table pipelined
    is
    v_str varchar2(30000) := acc_str;
    v_acc varchar2(30);
    v_acc_end pls_integer;
    begin
    loop
    v_acc_end := instrb(v_str,',');
    exit when (v_acc_end=0 or v_str is null);
    v_acc := substrb(v_str,1,v_acc_end-1);
    v_str := ltrim(v_str,v_acc);
    v_str := ltrim(v_str,',');
    pipe row(acc_type(rtrim(v_acc,';')));
    end loop;
    return;
    end;
    /给你个这样的例子,自己改吧。
      

  4.   

    moonshowder :能不能解释一下这个函数是怎么调用的,直接创建就行嘛?
      

  5.   


    函数调用  select 函数名(参数) from 表!