eg:
str1 = 'admin'
str2 = '1234,123admin,xcxx'
比较str1是否在str2中
用常用的charindex,返回肯定是有值的,这里自己动手写一个方法
----------------检查一个字符串是否在另外一个字符串中数,另外一个字符串元素用,隔开------------- Create function [dbo].[CheckStrInArr](@s as varchar(50),@sArr as varchar(5000)) returns int as begin declare @str varchar(5000) set @str=@sArr declare @next int declare @ret int -- 0表示不存在 1表示存在 set @ret=0 set @next=1 while @next<=dbo.Get_StrArrayLength(@str,',') begin if dbo.Get_StrArrayStrOfIndex(@str,',',@next)=@s begin set @ret=1; end set @next=@next+1 end return @ret end
----------------检查一个元素是否在数组中------------- Create function [dbo].[CheckStrInArr](@s as varchar(50),@sArr as varchar(5000)) returns int as begin declare @str varchar(5000) set @str=@sArr declare @next int declare @ret int -- 0表示不存在 1表示存在 set @ret=0 set @next=1 while @next<=dbo.Get_StrArrayLength(@str,',') begin if dbo.Get_StrArrayStrOfIndex(@str,',',@next)=@s begin set @ret=1; end set @next=@next+1 end return @ret end
---------------------获取数组的长度-------------- Create function [dbo].[Get_StrArrayLength] ( @str varchar(5000), --要分割的字符串 @split varchar(10) --分隔符号 ) returns int as begin declare @location int declare @start int declare @length int set @str=ltrim(rtrim(@str)) set @location=charindex(@split,@str) set @length=1 while @location<>0 begin set @start=@location+1 set @location=charindex(@split,@str,@start) set @length=@length+1 end return @length end
通过以上三个小函数即可判断特定字符串是否在目标串中