现在有这样一个表,数据如下
310-310-30-3-310-310-31-310-310-310-310-3-310-310
310-310-310-31-310-0-310-310-0-310-310-310-31-310
310-310-310-310-310-310-31-0-310-3-310-30-310-310
310-310-310-30-310-310-310-310-0-31-310-310-0-310
310-310-310-310-310-310-3-10-310-3-310-31-310-310
310-310-310-30-310-310-310-0-310-310-310-3-30-310
310-310-310-310-310-310-310-0-0-31-310-31-310-310
310-310-310-310-310-310-3-310-310-310-31-30-310-3
3-310-30-310-310-310-30-310-310-1-310-310-310-310
310-310-310-310-310-310-310-10-310-31-310-3-3-310
310-310-31-31-310-310-310-1-310-310-310-3-310-310
3-310-310-310-310-310-310-10-310-31-310-3-310-310
310-0-310-31-310-0-310-310-310-310-310-310-30-310
310-310-0-310-310-310-30-310-310-310-3-310-30-310
3-310-310-310-310-310-3-10-310-310-310-31-310-310
310-310-310-31-310-310-310-310-310-3-310-3-310-30
我想实现这样一个功能
1、如果有10个记录;
2、第1个记录分别与2、3、4...10相交,出现一个交集结果为A1;
3、第2个记录分别与3、4、5...10相交,出现一个交集结果为A2;
4、第3个记录分别与4、5、6...10相交,出现一个交集结果为A3;
5、第8个记录分别与9、10相交,出现一个交集结果为A8;
6、第9个记录分别与10相交,出现一个交集结果为A9;
在数据库中如何实现啊,现在没有一点头绪,大家指点一下,谢谢了
310-310-30-3-310-310-31-310-310-310-310-3-310-310
310-310-310-31-310-0-310-310-0-310-310-310-31-310
310-310-310-310-310-310-31-0-310-3-310-30-310-310
310-310-310-30-310-310-310-310-0-31-310-310-0-310
310-310-310-310-310-310-3-10-310-3-310-31-310-310
310-310-310-30-310-310-310-0-310-310-310-3-30-310
310-310-310-310-310-310-310-0-0-31-310-31-310-310
310-310-310-310-310-310-3-310-310-310-31-30-310-3
3-310-30-310-310-310-30-310-310-1-310-310-310-310
310-310-310-310-310-310-310-10-310-31-310-3-3-310
310-310-31-31-310-310-310-1-310-310-310-3-310-310
3-310-310-310-310-310-310-10-310-31-310-3-310-310
310-0-310-31-310-0-310-310-310-310-310-310-30-310
310-310-0-310-310-310-30-310-310-310-3-310-30-310
3-310-310-310-310-310-3-10-310-310-310-31-310-310
310-310-310-31-310-310-310-310-310-3-310-3-310-30
我想实现这样一个功能
1、如果有10个记录;
2、第1个记录分别与2、3、4...10相交,出现一个交集结果为A1;
3、第2个记录分别与3、4、5...10相交,出现一个交集结果为A2;
4、第3个记录分别与4、5、6...10相交,出现一个交集结果为A3;
5、第8个记录分别与9、10相交,出现一个交集结果为A8;
6、第9个记录分别与10相交,出现一个交集结果为A9;
在数据库中如何实现啊,现在没有一点头绪,大家指点一下,谢谢了
set @count1 = 0,@count2=2
while @count1<10
begin
while @count2<=10-@count1
begin
第@count1个记录和第@count2个记录相交
set @count2= @count2+1
end
@count2
end
功能:实现split功能的函数
*/create function dbo.fn_split
(
@inputstr varchar(8000),
@seprator varchar(10)
)
returns @temp table (a varchar(200))
as begin
declare @i intset @inputstr = rtrim(ltrim(@inputstr))
set @i = charindex(@seprator, @inputstr)while @i >= 1
begin
insert @temp values(left(@inputstr, @i - 1))set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
set @i = charindex(@seprator, @inputstr)
endif @inputstr <> '\'
insert @temp values(@inputstr)return
end
go--调用declare @s varchar(1000)set @s='1,2,3,4,5,6,7,8,55'select * from dbo.fn_split(@s,',')drop function dbo.fn_split
然后在程序中循环找出交集,然后再交集,直到我选出交集最多的数据出来
但是数据量比较大,大约有1万行,运算速度太慢,所以想通过数据库来实现,看看大家有没有更好的办法来处理
SPLIT这个我已经实现了,现在就是想快速的找出这些交集数据出来