手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >sqlserver中比较一个字符串中是否含含另一个字符串中的一个字符
sqlserver中比较一个字符串中是否含含另一个字符串中的一个字符
摘要:版本一:按分隔符进行比较算法思路:按分隔符截取搜索字符串循环与待搜索字符进行比较复制代码代码如下: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

【sqlserver中比较一个字符串中是否含含另一个字符串中的一个字符】相关文章:

sqlserver查询某个字段在哪些表中存在

sqlserver 字符串分拆 语句

显示 Sql Server 中所有表中的信息

sql server中datetime字段去除时间的语句

sql2000挂起无法安装的问题的解决方法

查找sqlserver数据库中某一字段在 哪

sqlserver2008 拆分字符串

SQL Server使用一个语句块批量插入多条记录的三种方法

sqlserver 比较两个表的列

sqlserver中获取当前日期的午夜的时间值的实现方法

精品推荐
分类导航