【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

 

通過以上三個小函數即可判斷特定字符串是否在目標串中

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM