SQL Server對比兩字串的相似度(函式演算法)
阿新 • • 發佈:2018-12-31
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