CREATE Function fnCompare(@chvA varchar(8000),@chvB varchar(8000)) returns varchar(200) As Begin declare @i int,@j int,@same decimal(10,2),@result varchar(200) select @same=0 If len(@chvA)>=len(@chvB) select @i=len(@chvA),@j=len(@chvB) Else select @i=len(@chvB),@j=len(@chvA) --set @result =@result +substring(@chvA,@j,1)+'*'+@chva while @j>0 Begin --If substring(@chvA,@j,1)=substring(@chvB,@j,1) if charindex(substring(@chvA,@j,2),@chvb)>0 select @same=@same+2 set @j=@j-1 End select @result=(Cast(Cast(@same*100/@i as int) as varchar)+'%') return @result End
用法:
select * from info order by dbo. fnCompare(title,'中华人民共和国')
可以应用于搜索结果排序,相关文章等.也可以用于判断文章的相似程序
相关标签:字符串相似度 sql自定义函数
|