1. 程式人生 > >SQL Server對比兩字串的相似度(函式演算法)

SQL Server對比兩字串的相似度(函式演算法)

ALTER FUNCTION FNStrCompare
(@Val1  VARCHAR(50),---比較字串1
 @Val2  VARCHAR(50),---比較字串2
 @Break VARCHAR(10) ---分隔符
)
RETURNS INT
AS
BEGIN
DECLARE @Num1 INT
DECLARE @Num2 INT
DECLARE @Val1Num INT
DECLARE @Val2Num INT
DECLARE @a INT
IF CHARINDEX(@Break,@Val1)>0 AND CHARINDEX(@Break,@Val2)>
0 BEGIN WHILE LEN(@Val1)>0 AND LEN(@Val2)>0 BEGIN IF CHARINDEX(@Break,@Val1)>0 AND CHARINDEX(@Break,@Val2)>0 BEGIN SET @Num1=CHARINDEX(@Break,@Val1)-1 SET @Val1Num=LEFT(@Val1,@Num1)
SET @Val1=SUBSTRING(@Val1,@Num1+2,LEN(@Val1)) SET @Num2=CHARINDEX(@Break,@Val2)-1 SET @Val2Num=LEFT(@Val2,@Num2) SET @Val2=SUBSTRING(@Val2,@Num1+2,LEN(@Val2)) END ELSE BEGIN SET
@Val1Num=CONVERT(INT,@Val1) SET @Val2Num=CONVERT(INT,@Val2) IF @Val1Num=@Val2Num BEGIN SET @a=0 BREAK END END IF @Val1Num>@Val2Num BEGIN SET @a=1 BREAK END IF @Val1Num<@Val2Num BEGIN SET @a=-1 BREAK END END END ELSE BEGIN SET @Val1Num=CONVERT(INT,@Val1) SET @Val2Num=CONVERT(INT,@Val2) IF @Val1Num>@Val2Num BEGIN SET @a=1 END IF @Val1Num<@Val2Num BEGIN SET @a=-1 END IF @Val1Num=@Val2Num BEGIN SET @a=0 END END RETURN @a END