【SQL】判断一个字符串是否在另外一个字符串中

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

通过以上三个小函数即可判断特定字符串是否在目标串中

猜你喜欢

转载自www.cnblogs.com/yhnet/p/12659069.html