本帖最后由 sbw317 于 2009-08-03 13:03:18 编辑

解决方案 »

  1.   

    如果像你这么有规律 
    那就:
    select 编号,length(从事项目)/3 as 项目数量
    from 种类表
      

  2.   

    使用分割符","
    不过看你数据,分割符好象没规律.如果能保证每个后面都有逗号的话.select 编号,count(*) 项目数量 
      from (select 编号,substr(从事项目,rownum,1) sa 
              from 人员信息表 
              connnect by rownum <length(从事项目))
     where sa = ','
    查出来有多少个“,”就有多少项目。
      

  3.   

    如果能保证每个项目后都有一个 “,” 作为结束的话,这个很容易人员信息 
    编号 从事项目 
    001 08,01,06, 
    002 02,03,04, 
    003 05,08, 
    004 08,07 
    005 03,04,01 
    006 02,06,01,05 
    007 01,02, 
    008 02, 假设这张表名为 test 编号为 id, 从事项目字段为 valueselect id, length(value) - length(replace(value, ',', '')) as icount from test;
    SQL> select * from test;ID         VALUE
    ---------- --------------------
    001        08,01,06,
    002        02,03,04,
    003        05,08,
    004        08,07,
    005        03,04,01,
    006        02,06,01,05,
    007        01,02,
    008        02,8 rows selectedSQL> select id, length(value) - length(replace(value, ',', '')) as icount from test;ID             ICOUNT
    ---------- ----------
    001                 3
    002                 3
    003                 2
    004                 2
    005                 3
    006                 4
    007                 2
    008                 18 rows selectedSQL> 
      

  4.   


    select 编号,length(translate(从事项目,',0123456789',',')) 数量 from  test_d
    刚开始看题,被领导叫去干活。看来楼主已经解决问题了,把我的代码贴上