字符串操作,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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值