ID[PK]   NAME[PK]
1    生产 销售
2    销售
需要得到的结果是
ID[PK]   NAME[PK]
1         生产
1         销售
2         销售

解决方案 »

  1.   

    由于你这个name字段不固定,可能要用PLSQL来处理,过程中处理,用instr和substr来拆分name字段,单纯的SQL还没想出好办法。
      

  2.   

    看这样如何,ORACLE 10G以上SELECT T.ID,REGEXP_INSTR(T.NAME,'销售|生产') FROM (SELECT ID,NAME FROM TABLE ) T
      

  3.   


    修改SELECT T.ID,REGEXP_SUBSTR(T.NAME,'销售|生产') FROM (SELECT ID,NAME FROM TABLE ) T
    也不知道SQL写得对不对
      

  4.   

    表两列,一个是id,一个是那么,id为主键,name以空格分隔数据?
      

  5.   

    name里的数据项是不是不固定的?是都用空格来分隔的?
      

  6.   

    不符合关系模型第一范式... 真是为难了后面的同学啊... 写个存储过程清理脏数据吧:
    1.按第一个空格截取name字段,只保留空格前面部分,将其ID和剩余name文本放入临时表
    2.循环遍历临时表,按第一个空格截取name字段,插入原表。临时表更新为name剩余部分。如果剩余部分为空则删除。
    3.临时表为空时退出循环。
      

  7.   

    SQL> edi
    已写入 file afiedt.buf  1  with tb as
      2  (select 1 id,'生产 销售' name from dual union all
      3  select 2,'销售' from dual)
      4  select distinct id,v_name
      5  from (select id,substr(' '||name||' ',instr(' '||name||' ' ,' ',level)+1,2) v_name
      6  from tb
      7  connect by level<=length(' '||name||' ') and connect_by_root(id)=id)
      8  where v_name is not null
      9* order by id
    SQL> /        ID V_NA
    ---------- ----
             1 生产
             1 销售
             2 销售
      

  8.   

    --来自读书笔记(wkc168和paddy)
    with tb as
    (select 1 id,'生产 销售' name from dual union all
    select 2,'销售' from dual)
    select distinct id,name
    from (select id,substr(' '||name||' ',instr(' '||name||' ' ,' ',level)+1,2) name
    from tb
    connect by level<=length(' '||name||' '))
    WHERE REGEXP_LIKE(name, '[[:alpha:]]' )
    order by id        ID NAME
    ---------- ----
             1 生产
             1 销售
             2 销售
      

  9.   

    absolutely ,he is a talent! 
      

  10.   

    NAME  字段的内容  (我们只 要生产 和  销售的,其他的全部搞成 其他经营方式)
    加工 销售
    饮食服务
    租赁、服务
    零售、服务
    安装、服务、批发、零售
    批发 零售  服务
    加工 销售
    加工、生产、销售
    零售 服务
    加工 销售
    加工 维修
    零售 服务
    批发 零售 服务
    运输服务
    加工 销售
    生产、加工、销售
    加工、销售
    生产 销售 加工
    设计、制作、代理、发布
    设计、制作、发布、代理
    运输  服务
    零售 维修
    租赁 维修
    下面的ORACLE SQL 是查找同时含有(生产或销售)和其他类型的SQL
    select * from TSM02_OTHER where (regexp_like(TSM02_OTHER.MANA_MODE_CODE,
                       '生产|销售')
     and length(regexp_replace(TSM02_OTHER.MANA_MODE_CODE,
                          '[[:punct:]]|[[:blank:]]|生产|销售,
                          ''))>1)