我想用sql语句求出:
表名tb_admin   字段名alisten
一个字段(alisten)里的字符串“1,2,3,4,5,6,7,8,”中出现了几次“,”

解决方案 »

  1.   

    select alisten,length(alisten)-replace(alisten,',','')  from tb_admin
      

  2.   

    CREATE OR REPLACE FUNCTION SCOTT.get_comma_count (instrs VARCHAR2)
       RETURN NUMBER
    AS
       v_length   INT;
       v_count    INT;
    BEGIN
       v_count := 0;
       v_length := LENGTH (instrs);   IF v_length < 1
       THEN
          RETURN 0;
       ELSE
          FOR i IN 1 .. v_length
          LOOP
             IF SUBSTR (instrs, i, 1) = ','
             THEN
                v_count:= v_count+1;
                end if;
                end loop;
                return v_count;
                end if;
                
                end ;
    /select get_comma_count(alisten) from tb_admin;
      

  3.   


    --一楼的方法很巧妙,不过是不是应该加个LENGTH?
    select alisten,length(alisten)-length(replace(alisten,',','')) from tb_admin
      

  4.   

    select sum(decode(instr(alisten,'1,2,3,4,5,6,7,8,'),1,1,0))  from tb_admi; 
      

  5.   

    上面错了。。理解错了。晕。我以为是 字段alisten中 出现了多少次 '1,2,3,4,5,6,7,8,'这个字符串。
      

  6.   

    select length(regexp_replace('1,2,3,4,5,6,7,8,','[^,]+','')) from dual
      

  7.   


    12楼的方法有点意思,正则表达式很强大呀,我也写一个另类的方法.Select Count(*)
      From (Select '1,2,3,4,5,6,7,8,' v From dual)
    Connect By instr(v, rownum) > 0;
      

  8.   

    Select Count(*)
      From (Select '1,2,3,4,5,6,7,8,' v From dual)
    Connect By instr(v, ',', 1, rownum) > 0;漏了点东西.抱歉