sqlserver分隔字符串,查找父类下所有子类,删除重复字符串,计算一字符串在别一字符中出现的次数

/*dnt下面分隔字符串函数*/

create FUNCTION [dnt_split]
(
 @splitstring NVARCHAR(4000),
 @separator CHAR(1) = ','
)
RETURNS @splitstringstable TABLE
(
 [item] NVARCHAR(200)
)
AS
BEGIN
    DECLARE @currentindex INT
    DECLARE @nextindex INT
    DECLARE @returntext NVARCHAR(200)
    SELECT @currentindex=1
    WHILE(@currentindex<=datalength(@splitstring)/2)
    BEGIN
        SELECT @nextindex=charindex(@separator,@splitstring,@currentindex)
        IF(@nextindex=0 OR @nextindex IS NULL)
            SELECT @nextindex=datalength(@splitstring)/2+1
       
        SELECT @returntext=substring(@splitstring,@currentindex,@nextindex-@currentindex)
        INSERT INTO @splitstringstable([item])
        VALUES(@returntext)
       
        SELECT @currentindex=@nextindex+1
    END
    RETURN
END

 

/*查找分类下面所有子类*/

create     function   f_child(@typeId)  
  returns   @re   table(typeId  int,Level   int)  
  as  
  begin  
  declare   @l   int  
  set   @l=0  
  insert   @re   select   @typeId,@l  
  while   @@rowcount>0 

  begin  
  set   @l=@l+1  
  insert   @re   select   a.typeid,@l  
  from   product_type   a   join   @re   b   on   a.fatherId=b.typeId  
  where   b.level=@l-1
  end  
  return  
  end 

 

/*删除以逗号分隔的重复字符串*/

create function DeleteRepeatStrs
(@strs varchar(100))
returns varchar(100)
as
begin
declare @norepeatStr varchar(100)
declare @index int
set @norepeatStr=''
declare @id varchar(10)
declare repeatCursor cursor for select * from dnt_split(@strs,',')
open repeatCursor
fetch next from repeatCursor into @id
 while @@fetch_status=0
 begin
  select @index=charindex(@id,@norepeatStr,0)
  if @index=0
  begin
   set @norepeatStr=@norepeatStr+@id+','
  end
  fetch next from repeatCursor into @id
 end
set @norepeatStr=substring(@norepeatStr,1,len(@norepeatStr)-1)
close repeatCursor
deallocate repeatCursor
return @norepeatStr
end

 

/*计算参数2在参数1中出现的次数*/

ALTER   function cisum(@thestr varchar(1000),@searchstr varchar(100))returns smallintasbegindeclare @a smallint,@b smallintset @a=0set @b=1while @b<=len(@thestr)    begin      if substring(@thestr,@b,len(@searchstr))=@searchstr begin set @a=@a+1 end      set @b=@b+1    endreturn @aend

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...