日期:2014-05-18 浏览次数:20469 次
create function comstr(@s1 varchar(100), @s2 varchar(100)) returns int as begin declare @len int, @i int, @diff int select @len=len(@s1), @i=1, @diff=0 while @i<=@len begin if substring(@s1,@i,1)<>substring(@s2,@i,1) set @diff+=1 if @diff>3 return 128 set @i+=1 end return @diff end go select dbo.comstr('1q2w3e4r5t6y7u8i9o0p','kq2w3e4r5t6y7u8i9o0p') select dbo.comstr('1q2w3e4r5t6y7u8i9o0p','kq2w3abcdefg7u8i9o0p')
------解决方案--------------------
给点建议,不知是否可行。
1.首先,要先筛选一遍,把相等和不相等的筛选出来。
2.之后对这些不想等的字符串进行分组
1.也就是把字符串拆开成单个字符进行比较。
比如 1q2w3e4r5t6y7u8i9o0p
拆成 分组ID 字符
1 1
1 q
1 2
1 w
.....
这样进行进行比较 相等或不相等,之后统计下个数。