SQL处理字符串相似度函数
本函数严格处理字符串,同位置的字符串相同时才算是相似。结果采用小于等于1的小数表示,越靠近1表示相似度越高。
Create Function SimilarSearch(
@str varchar(50),
@comparestr varchar(50)
)
returns decimal(18,2)
AS
Begin
declare @sm decimal(18,2)
select @sm=0.0
declare @l int
declare @c int
select @l=len(@str)
select @c=len(@comparestr)
if(@c>@l)
begin
select @l=@c
select @c=len(@str)
end
---get the max str length
declare @i int
@str varchar(50),
@comparestr varchar(50)
)
returns decimal(18,2)
AS
Begin
declare @sm decimal(18,2)
select @sm=0.0
declare @l int
declare @c int
select @l=len(@str)
select @c=len(@comparestr)
if(@c>@l)
begin
select @l=@c
select @c=len(@str)
end
---get the max str length
declare @i int
declare @same int
select @same=0
select @c=len(@str)
select @i=1
while(@i<=@c)
begin
if(subString(@str,@i,1)=substring(@comparestr,@i,1))
select @same=@same+1
select @i=@i+1
end
select @sm=round(@same*1.00/@l,2)
return @sm
end
select @same=0
select @c=len(@str)
select @i=1
while(@i<=@c)
begin
if(subString(@str,@i,1)=substring(@comparestr,@i,1))
select @same=@same+1
select @i=@i+1
end
select @sm=round(@same*1.00/@l,2)
return @sm
end