表 mytable        ID    ProblemNumbers  
         1     4,5,6
         2     10,12
         3     7,8,9,10
         4     12,15
要求得到结果为 11

解决方案 »

  1.   

    select sum(len(ProblemNumbers)-len(replace(ProblemNumbers,',',''))) fom mytable
      

  2.   

    select sum(len(ProblemNumbers)-len(replace(ProblemNumbers,',',''))) from mytable
      

  3.   

    更正:
    select sum(len(ProblemNumbers)-len(replace(ProblemNumbers,',',''))+1) from mytable--测试
    select sum(len(ProblemNumbers)-len(replace(ProblemNumbers,',',''))+1) from 
    (
    select  1 as ID,     '4,5,6' as ProblemNumbers
    union all select 
             2,     '10,12'
    union all select 
             3 ,    '7,8,9,10'
    union all select 
             4  ,   '12,15'
    ) as t--结果
                
    ----------- 
    11(所影响的行数为 1 行)
      

  4.   

    笨一点的方法:把字符串拆成单个, 1     4,5,6 -->1,4 1,5 1,6 其他记录一样拆.
    然后sum(ProblemNumbers).
      

  5.   

    select   sum(len(ProblemNumbers)-len(replace(ProblemNumbers, ',', ''))+1)   from   mytable
      

  6.   


    select sum(len(replace(ProblemNumbers,',',,'))-len(ProblemNumbers)+1) from mytable 
      

  7.   


    select sum(len(replace(ProblemNumbers,',',',,'))-len(ProblemNumbers)+1) from mytable