SQL函数:匹配两个字符串中有相同长度的字符

-- ================================================ -- Template generated from Template Explorer using: -- Create Scalar Function (New Menu).SQL -- -- Use the Specify Values for Template Parameters -- command (Ctrl-Shift-M) to fill in the parameter -- values below. -- -- This block of comments will not be included in -- the definition of the function. -- ================================================ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: liuqj -- Create date: 2008-10-27 -- Description: 用于比较两个字符串是否有相同长度的字符,如果有返回1,如果没有返回0 -- ============================================= ALTER FUNCTION FN_GetSameStrInTwoStr ( -- Add the parameters for the function here @str1 VARCHAR(100) --源字符串,取该串中的@strLen长度的字符是否在目的字符串 , @str2 VARCHAR(100) --目的字符串 , @strLen INT --比较的长度 ) RETURNS INT AS BEGIN -- Declare the return variable here --定义源字符串的长度 DECLARE @len INT --用于比较时,截取的@strLen长度的字符串 DECLARE @sub VARCHAR(100) --字义返回值 DECLARE @returnValue INT --初使化返回值 SET @returnValue=0 SET @len=LEN(@str1) --如果比较的长度大于源字符串的长度,返回0,既失败 IF @strLen>@len RETURN 0 --定义循环变量 DECLARE @i INT SET @i=1 /* 从源字符串的第一个字符取@strLen长度的字符, 比较是否在目的字符串,如果没有, 则再从第二个字符取,直到截取的字符串在目的字符中出现 */ WHILE @i<@len-@strLen+1 BEGIN SELECT @sub= SUBSTRING(@str1,@i,@strLen) --PRINT(@sub) IF CHARINDEX(@sub,@str2)>0 BEGIN SET @returnValue=1 BREAK END ELSE SET @i=@i+1 END RETURN @returnValue END GO

你可能感兴趣的:(SQLServer)