SQL在字符串中取出最长数字子序列

CREATE FUNCTION dbo.GetJZZH(@StrJZZH nvarchar(200))
RETURNS nvarchar(100)  AS
BEGIN
  --声明变量
  --函数返回值
  declare @iRet nvarchar(100)
  --循环用的变量
  declare @i int
  --记录字符串长度
  declare @LenStr int
  --记录字符串中当前字符
  declare @CurStr varchar(1)
  --初始化函数返回值
  set @iRet=''
  --如果字符串里没有数字,直接返回
  if PATINDEX('%[0-9]%',@StrJZZH)=0 
  goto ext
  --变量初始化
  select @LenStr=len(@StrJZZH),@i=1
  while @i<=@LenStr
  begin
   set @CurStr=substring(@StrJZZH,@i,1)
   --如果是数字或者x
   if ((@CurStr>='0') and (@CurStr<='9')) or (@CurStr='x') or (@CurStr='X')
   begin
     --数字就记录下来
     set @iRet=@iRet+@CurStr    
   end
   --出现的是字母
   else
   begin
     if len(@iRet)>6
     begin
       goto ext
     end
     else
     begin
       set @iRet=''
     end    
   end   
   set @i=@i+1
  -- while循环结尾end  
  end  
  ext:
  return @iRet
END;

猜你喜欢

转载自www.cnblogs.com/jijm123/p/12797995.html
今日推荐