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