本帖最后由 wh81666825 于 2011-08-15 11:11:14 编辑

解决方案 »

  1.   

    distinctgroup by + sum参考
      

  2.   

                string str = ",1,1,1,2,2,2,3,3,4,5,6,7,8,9,123,234,1001,1003,1004,1001,";
                string[] result = str.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                List<string> list = new List<string>();
                foreach (string s in result)
                {
                    if (!list.Contains(s))
                        list.Add(s);
                }
                Console.WriteLine(",{0},", string.Join(",", list.ToArray()));
      

  3.   

                string str = ",1,1,1,2,2,2,3,3,4,5,6,7,8,9,123,234,1001,1003,1004,1001,";
                Console.WriteLine(",{0},", string.Join(",", str.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Distinct().ToArray()));
                Console.ReadLine();
      

  4.   

    select top 1 列 from 表 group by 列
      

  5.   

    SQL中处理你直接Select distinct 不就行了么?
      

  6.   

    SQL中用“SELECT DISTINCT 字段名 FROM 表名”就可以了,但是这是针对逗号分隔的不同值而言,如果LZ的这一整串字符串是一个值的话,SQL就傻了,那么只好取出来放到一个变量中,假设是str,用str.Split(',')分隔成一个字符串数组,string[] arrStr=str.Split(',');然后用2楼得方法进行处理。这是个思路,VB.NET语法没接触过,楼主见谅。
      

  7.   

    alter function test(@str varchar(200))
    returns varchar(200)
    as
    begin
    declare @result varchar(200),@temp varchar(100)
    set @result=''
    set @temp=''
    while(charindex(',',@str)<>0)
    begin
    set @temp=substring(@str,1,charindex(',',@str))
    if(charindex(@temp,@result)<=0)
    set @result=@result+@temp
    set @str=stuff(@str,1,charindex(',',@str),'')
    end
    return @result
    end
    select dbo.test(',1,1,1,2,2,2,3,3,4,5,6,7,8,9,123,234,1001,1003,1004,1001,')
    --,1,2,3,4,5,6,7,8,9,123,234,1001,1003,1004,