表里有个存放用户名的字段,里面存放的用户名以“,”分割,如1 小白,小兰,小红,小明,
2 小红,小蓝,小黑,
3 小田,小草,小白,
4 小白,小黄,现在要统计有多少个用户,就是过滤掉重复的人名。谢谢!

解决方案 »

  1.   

    你的需求和下面的链接是一模一样的.参考17楼第2段SQL:http://topic.csdn.net/u/20080721/12/c87d1a1d-b817-4de6-84ac-4f6ab56ef15a.html?seed=714459994#
      

  2.   

    select length(字段)-length(replace(字段,',','')) 用户数 from 表
      

  3.   


    --根据楼上的提示,改一下原来的SQL,自己也学习一下了!--data:
    create table document 
    (id number , 
    label varchar2(100)) ; insert into document values(1,'小白,小兰,小红,小明,');
    insert into document values(2,'小红,小蓝,小黑,');
    insert into document values(3,'小田,小草,小白,');
    insert into document values(4,'小白,小黄,');
    commit;--SQL:
    select aa,count(aa)
    from
    (
    select 
        substr(',' || label,
        instr(',' || label,',',1,rn)+1,
        instr(',' || label,',',1,rn+1)-instr(',' || label, ',', 1, rn)-1) aa
    from document,
      (
        select rownum rn
        from all_objects
        where rownum<(select max(length(label)-length(replace(label,',',''))+1) from document)
      )
    )
    group by aa having count(aa)>0
    --RESULT:
    小白 3
    小草 1
    小黑 1
    小红 2
    小黄 1
    小蓝 1
    小兰 1
    小明 1
    小田 1
      

  4.   

    过滤掉重复的人名,就是如果人名计算大于一个的时候就不算!
    所以,条件中的count(aa)=1;
      

  5.   

    感谢“sleepzzzzz”和 “cosio ”我要的结果已经达到了,再在外面套个COUNT(*),谢谢! 分不多,别嫌少!
      

  6.   

    不好意思,你的需求有一点点差别,但是解决思路是一样的.
    你应该感谢的是mantisXF.