sqlserver中比较一个字符串中是否含含另一个字符串中的一个字符_mssql数据库教程-查字典教程网
sqlserver中比较一个字符串中是否含含另一个字符串中的一个字符
sqlserver中比较一个字符串中是否含含另一个字符串中的一个字符
发布时间:2016-12-29 来源:查字典编辑
摘要:版本一:按分隔符进行比较算法思路:按分隔符截取搜索字符串循环与待搜索字符进行比较复制代码代码如下:USE[Fly]GO--参数:@inStr...

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

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

复制代码 代码如下:

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

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新mssql数据库学习
    热门mssql数据库学习
    编程开发子分类