`

字符串操作,sql 倒序,以及截取字符串

 
阅读更多

--------字符串倒序
alter FUNCTION FN (@P VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
 DECLARE @I int,@N int
 SET @N=LEN(@P)
 SET @I=LEN(@P)-1
 WHILE @I>0
 BEGIN
  SET @P=@P+SUBSTRING(@P,@I,1)
  SET @I=@I-1
 END
 SET @P=RIGHT(@P,@N)
 RETURN @P
END
--字符串截取
ALTER function SPITSTR(@instr varchar(200),@index int )
returns varchar(200)
as
begin
 declare @i  int,@n int,@be int,@end int
    declare @restr varchar(200)--字符串
    declare @centerstr varchar(200) --中间字符串
 SET @i=1
    set @restr=@instr
    set @be=@index
        if(@index<>0)
        begin
  set @be=0
        end
    SET @n=len(@restr)-len(replace(@restr,'@',''))
    set @instr='' --清空
    --获取@的位置
    set @end=patindex('%@%',@restr)--第一个@ 的位置
   while(@i<=@n+1)
   begin
       
        SET @end=patindex('%@%',@restr)--重新确立位置
        if(@i=@n+1)
        begin
   set @end=len(@restr)
        end
     
      --set @end=len(@restr)--长度
      --截取字符串
      if(@i=1 or @i=@n+1 or @i=@index)
        begin
    set @instr=@instr+substring(@restr,@be,@end); 
  end
      else
        begin
   set @instr=@instr+substring(@restr,@be,@end-1);
        end
      --重新开始位置
      set @be=@end
      --重新赋值字符串
      set @restr=substring(@restr,@be+1,len(@restr))
      set @be=1
      SET @i=@i+1
      if (@index<>0)
  begin
    if(@i<>@index)
             begin
      set @instr=''
             end
            else
            begin
     break
           end
     end
   end
   return @instr;
end
--函数漏洞,索引从2 开始
SELECT DBO.SPITSTR('1234aa@56@7@89',2)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics