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
通過以上三個小函數即可判斷特定字符串是否在目標串中