sqlserver中比较一个字符串中是否含含另一个字符串中的一个字符

2022-05-24 0 501

版本一:按分隔符进行比较

算法思路:按分隔符截取搜索字符串循环与待搜索字符进行比较


复制代码 代码如下:

USE [Fly]

GO

–参数:@inStr 待搜索字串,@fndStr 搜索字串,@doc 分隔符

— 例:select dbo.fSearch(‘1,2,3,4,5,6′,’3,6,5,8,2′,’,’) 返回0-不匹配,返回1-匹配(@instr中有@fndStr内容)

–可以用于表搜索,如:

— Select *,dbo.fSearch(str,’3,6,5,8,2′,’,’) as 是否匹配 from 表名

— @fndStr和@doc两个参数就需要你自己提供了,@inStr可以是数据表里的某个待搜索字段名

CREATE FUNCTION CGF_FN_Search(@inStr VARCHAR(500),@fndStr VARCHAR(500),@doc VARCHAR(5))

RETURNS INT

AS

BEGIN

DECLARE @i INT,@c VARCHAR(500),@fStr VARCHAR(500)

SET @fStr = @fndStr

WHILE(LEN(@fStr) > 0)

BEGIN

SET @i = Charindex(@doc, @fStr)

IF(@i = 0)

BEGIN

IF(CHARINDEX(@fStr,@inStr) > 0)

RETURN 1

ELSE

RETURN 0

END

ELSE

BEGIN

SET @c = SUBSTRING(@fStr,1,@i-1)

IF(CHARINDEX(@c,@inStr) > 0)

RETURN 1

ELSE

SET @fStr = SUBSTRING(@fStr,@i+LEN(@doc),LEN(@fStr))

END

END

RETURN 0

END

版本二:逐字进行比较

算法思路:逐字截取搜索字符串循环与待搜索字符进行比较


复制代码 代码如下:

USE [Fly]

GO

/****** Object: UserDefinedFunction [dbo].[CGF_FN_SearchChar] Script Date: 09/03/2010 16:42:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE FUNCTION [dbo].[CGF_FN_SearchChar](@inStr VARCHAR(500),@fndStr VARCHAR(500))

RETURNS INT

AS

BEGIN

DECLARE @i INT,@f INT,@c VARCHAR(1)

SET @i = 1

SET @f = LEN(@fndStr)

WHILE(@i <= @f)

BEGIN

SET @c = SUBSTRING(@fndStr, @i, @i)

IF(CHARINDEX(@c,@inStr) > 0)

BEGIN

RETURN 1

END

SET @i = @i + 1

END

RETURN 0

END

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MsSql sqlserver中比较一个字符串中是否含含另一个字符串中的一个字符 https://www.niceym.com/60148.html